NSImageRep错误的分辨率?

use*_*274 1 size tiff objective-c nsimage nsimagerep

MacOS 10.7.4带有具有144 DPI图像代表的新图标。不好的是,当我在NSImage中加载这些图标之一时,我只会得到512px大小的代表。我的意思是:我在NSImage中加载一个1024px / 144dpi的icns文件,然后询问每个图像代表的大小...没有代表的大小为1024px,我只能得到最大的大小。512像素(无论某个代表的分辨率为72dpi而不是144dpi,实际上:10.7.4中的新图标(例如TextEdit或Automator)对于每种尺寸都有两种分辨率的代表,唯一的代表是1024px(144dpi的单个代表存在该分辨率) )。

难道NSImageRep似乎不了解其真实分辨率?为什么我仅针对1024px / 144dpi而不是例如512px / 144dpi出现此问题?

如果我读取了NSImage的TIFFRepresentation并将其写回到文件中,则会得到正确的1024px / 144dpi TIFF文件,而如果我通过CGImageSource / CGImageDestination编写与kUTTypeTIFF相同的NSImage,则会得到1024px / 72dpi文件。

所有这些使我感到非常困惑。

非常感谢

Ken*_*ses 5

文档-[NSImageRep size]说:

图像表示的大小,以用户坐标空间中的点为单位

(已添加重点。)

这不是以像素为单位的度量。这是一个以磅为单位的度量,因此当点为72 dpi时,以144 dpi 为1024 像素的图像将测量512

您想查询-pixelsWide-pixelsHigh方法(如果确实关心像素尺寸;通常不必这样做)。