NSImage отличается размером в коде, отличном от Finder / Preview. - PullRequest
4 голосов
/ 07 июня 2010

У меня есть пара изображений, которые я использую в своем приложении (одно из них прилагается). Странная вещь в том, что реальный размер изображения (показанный поиском и предварительным просмотром) составляет 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, неверен.

Это изображение:

альтернативный текст http://www.tomaszkrasnyk.yoyo.pl/image.jpg

Ответы [ 3 ]

6 голосов
/ 07 июня 2010

Я считаю, что - [NSImage size] возвращает размер в точках, а не в пикселях. Вот почему в NSImageRep есть как метод размера, так и методы pxHigh и пиксельWide. Ваше изображение, очевидно, не с разрешением 72 dpi.

1 голос
/ 12 декабря 2011
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);
0 голосов
/ 07 июня 2010

NSImage может содержать несколько представлений одного и того же изображения, каждое из которых имеет разные размеры. Я бы взглянул на метод -representations в NSImage, а затем взглянул на каждый NSImageRep объект, возвращенный в массив, чтобы увидеть, что у него есть.

...