NSImage отличается размером в коде, отличном от Finder/Preview.
У меня есть несколько изображений, которые я использую в своем приложении (одно из них прилагается). Странно то, что реальный размер изображения (показанный поиском и предварительным просмотром) составляет 1200x701 пикселей.
Когда я получаю доступ к изображению из кода и по его размеру, я получаю 360x210px. Что здесь происходит?
Код, который я использую, чтобы получить размер изображения:
NSImage *newImg = [[NSImage alloc] initWithContentsOfURL:
[NSURL URLFromPasteboard:[sender draggingPasteboard]]];
float h = [newImg size].height; //height is 210px - should be 701px
float w = [newImg size].width; //width is 320px - should be 1200px
Содержимое newImg - это то же изображение, которое было указано и загружено - я все равно отображаю его в NSImageView, так что я вижу. Просто размер взят с -size
неправильно.
Это изображение:
3 ответа
Я считаю, что -[NSImage size] возвращает размер в точках, а не в пикселях. Вот почему в NSImageRep есть как метод размера, так и методы pxHigh и пиксель Wide. Ваше изображение явно не с разрешением 72 dpi.
NSImageRep *imgRep = [NSImageRep imageRepWithContentsOfFile:imagePath];
int imageWidth = (int)[imgRep pixelsWide];
int imageHeight = (int)[imgRep pixelsHigh];
imgRep = nil;
NSLog(@"original image width: %d",imageWidth);
NSLog(@"original image height: %d",imageHeight);
NSImage
может содержать несколько представлений одного и того же изображения, каждое из которых имеет разные размеры. Я бы посмотрел на -representations
метод на NSImage
, а затем взглянуть на каждый NSImageRep
объект возвращается в массив, чтобы увидеть, что все это имеет.