NSImage
size
метод возвращает информацию о размере, которая зависит от разрешения экрана.Чтобы получить размер, представленный в реальном изображении файла, вам нужно использовать NSImageRep
.Вы можете получить NSImageRep
из NSImage
, используя метод representations
.В качестве альтернативы вы можете создать экземпляр подкласса NSBitmapImageRep
, например, так:
NSArray * imageReps = [NSBitmapImageRep imageRepsWithContentsOfFile:@"<path to image>"];
NSInteger width = 0;
NSInteger height = 0;
for (NSImageRep * imageRep in imageReps) {
if ([imageRep pixelsWide] > width) width = [imageRep pixelsWide];
if ([imageRep pixelsHigh] > height) height = [imageRep pixelsHigh];
}
NSLog(@"Width from NSBitmapImageRep: %f",(CGFloat)width);
NSLog(@"Height from NSBitmapImageRep: %f",(CGFloat)height);
Цикл учитывает, что некоторые форматы изображений могут содержать более одного изображения (например, TIFF).
Вы можете создать NSImage в этом размере, используя следующее:
NSImage * imageNSImage = [[NSImage alloc] initWithSize:NSMakeSize((CGFloat)width, (CGFloat)height)];
[imageNSImage addRepresentations:imageReps];