MacOS 10.7.4带有新图标,图像代表为144 DPI。不好的是,当我在NSImage中加载其中一个图标时,我只能获得大小为512px的代表。我的意思是:我在NSImage中加载一个1024px / 144dpi的icns文件,然后我问每个图像代表的大小...没有rep的大小为1024px,我只获得最大的大小。 512px(无论代表是否具有72dpi而不是144dpi的分辨率:实际上10.7.4中的新图标,如TextEdit或Automator,每个大小的两个分辨率都有代表,除了1024px,它存在于144dpi的单个代表中)。
看来NSImageRep似乎并不了解其真正的分辨率吗?为什么我只针对1024px / 144dpi而不是例如512px / 144dpi来解决这个问题?
如果我读了NSImage的TIFFRepresentation并将其写回文件,我得到一个正确的1024px / 144dpi TIFF文件,而如果我通过CGImageSource / CGImageDestination写同样的NSImage作为kUTTypeTIFF我得到一个1024px / 72dpi文件。
所有这些让我变得非常困惑。
非常感谢
答案 0 :(得分:4)
-[NSImageRep size]
的文档说:
图像表示的大小,以用户坐标空间中的点测量。
(强调补充。)
这不是以像素为单位的度量。它是以磅为单位的度量,因此当点为72 dpi时,144 dpi的1024 像素的图像测量512 点。
您想要查询-pixelsWide
和-pixelsHigh
方法(如果您确实关心像素尺寸;通常不应该这样做。)