4

我在我的应用程序中使用了几张图片(其中一张已附上)。奇怪的是,真实的图像尺寸(由取景器和预览显示)是 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

4

3 回答 3

7

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

于 2010-06-07T16:11:07.997 回答
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);
于 2011-12-12T12:33:38.510 回答
0

一个NSImage可以包含同一图像的多个表示,每个表示具有不同的大小。我会看一下-representationson 的方法NSImage,然后看一下NSImageRep数组中返回的每个对象,看看它有什么。

于 2010-06-07T16:01:37.723 回答