NSImage在Finder / Preview显示的代码中有不同的大小

时间:2010-06-07 15:37:39

标签: cocoa nsimage

我在我的应用程序中使用了一些图像(其中一个是附加的)。奇怪的是,真实的图像大小(由取景器和预览显示)是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获取的大小是错误的。

这是图片:

alt text http://www.tomaszkrasnyk.yoyo.pl/image.jpg

3 个答案:

答案 0 :(得分:6)

我相信 - [NSImage size]返回点的大小,而不是像素。这就是NSImageRep同时具有size方法和pixelsHigh以及pixelsWide方法的原因。您的图像显然不是72 dpi分辨率。

答案 1 :(得分:1)

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);

答案 2 :(得分:0)

NSImage可以包含同一图片的多个表示,每个表示的大小不同。我将查看-representations上的NSImage方法,然后查看数组中返回的每个NSImageRep对象,看看它有什么。