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