1

MacOS 10.7.4 带有新图标,其图像代表为 144 DPI。不好的是,当我在 NSImage 中加载其中一个图标时,我只能得到大小为 512px 的代表。我的意思是:我在 NSImage 中加载了一个 1024px/144dpi icns 文件,然后我询问每个图像代表的大小……没有代表的大小为 1024px,我只得到最大的大小。512px(无论代表是否具有 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 文件。

所有这些事情都让我变得非常困惑。

非常感谢

4

1 回答 1

5

文档-[NSImageRep size]说:

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

(强调补充。)

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

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

于 2012-05-13T23:28:26.183 回答