获取NSImage的正确图像宽度和高度

ara*_*ide 19 macos cocoa objective-c nsimage

我使用下面的代码来获取NSImage的宽度和高度:

NSImage *image = [[[NSImage alloc] initWithContentsOfFile:[NSString stringWithFormat:s]] autorelease];
imageWidth=[image size].width;
imageHeight=[image size].height;
NSLog(@"%f:%f",imageWidth,imageHeight);
Run Code Online (Sandbox Code Playgroud)

但有时候imageWidth,imageHeight不会返回正确的值.例如,当我读取图像时,EXIF信息显示:

PixelXDimension = 2272;
PixelYDimension = 1704;
Run Code Online (Sandbox Code Playgroud)

但是imageWidth,imageHeight输出

521:390 
Run Code Online (Sandbox Code Playgroud)

Kib*_*tik 24

图像的尺寸(以像素为单位)存储在图像的NSImageRep中.如果您的文件只包含一个图像,它将如下所示:

NSImageRep *rep = [[image representations] objectAtIndex:0];
NSSize imageSize = NSMakeSize(rep.pixelsWide, rep.pixelsHigh);
Run Code Online (Sandbox Code Playgroud)

其中image是你的NSImage,imageSize是你的图像大小(以像素为单位).


Par*_*iya 10

NSImage大小方法返回依赖于屏幕分辨率的大小信息.要获得实际文件映像中显示的大小,您需要使用NSImageRep.

参考nsimage-size-not-real-size-with-some-pictures链接并获得帮助