Macos 视网膜nsi图像大小的检测

Macos 视网膜nsi图像大小的检测,macos,nsimage,nsimageview,retina,Macos,Nsimage,Nsimageview,Retina,我将一个图像放入NSImageView并输出图像的大小。这适用于标准图像,但我希望以非视网膜大小输出视网膜图像的大小,例如100x100@2x图像,我希望输出50x50的大小。除了检测文件名之外,我想不出一种方法来实现这一点。有没有一种方法可以检测图像的比例,这样我就可以控制输出大小了?我必须自己处理这个问题 您可以这样做: NSImage *image = [...]; NSData* data = image.TIFFRepresentation; NSBit

我将一个图像放入NSImageView并输出图像的大小。这适用于标准图像,但我希望以非视网膜大小输出视网膜图像的大小,例如100x100@2x图像,我希望输出50x50的大小。除了检测文件名之外,我想不出一种方法来实现这一点。有没有一种方法可以检测图像的比例,这样我就可以控制输出大小了?

我必须自己处理这个问题

您可以这样做:

NSImage *image = [...];
NSData* data = image.TIFFRepresentation;                
NSBitmapImageRep* bitmap = [NSBitmapImageRep imageRepWithData:data];
CGFloat actualHeight = bitmap.pixelsHigh;

因此,如果你将
image.size.height
bitmap.pixelsHigh
进行比较,你就可以判断这是否是你正在处理的视网膜图像。

通常的命名惯例是,100x100@2x图像意味着它是200像素乘以200像素,而不是50像素乘以50像素<代码>NSImages可以有多个表示形式。图像的大小总是以点为单位,而不是以像素为单位。表示的像素尺寸可能在点上不同于图像的大小,并且可能(甚至)也不同于其他表示。因此,
NSImage
不仅仅只有一个像素大小。我正在尝试打开一个带有@2x后缀的图像。它是1024x1024,但是你提到的两个高度给我的值都是512。