NSImage imageNamed:对于Mac Mini,返回小图标而不是高分辨率

时间:2009-10-27 04:45:58

标签: objective-c icons nsimage imagenamed

使用NSImage的{​​{1}}方法获取当前计算机的图标时,如果我在Mac Mini上运行,那么我会得到一张低分辨率图像。如果我从MacBook运行相同的代码,那么我会得到一个像我期望的高分辨率图标。

我的代码如下:

imageNamed:

当我在MacBook上运行时,一切都很好,我得到了一台512x512的电脑图标。当我在我的Mac Mini上运行它时,我得到一个32x32图标,已经升级到512x512。

关于如何获得高分辨率版本的任何想法?

1 个答案:

答案 0 :(得分:3)

我相信图片来自/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/

Mac mini图标名为com.apple.macmini.icns。您可能想要检查该文件是否在您的计算机上包含512x512图标(它在我的网站上运行,运行Snow Leopard)'

出于调试目的,您还应将-representations的输出发送到NSLog以验证该图标是否具有512x512版本。

编辑:

10.6 AppKit Release Notes在NSImage和CGImage之间的更新关系上有很多。

在Snow Leopard上,您可以通过转换为CGImageRef获取全分辨率图像:

NSImage* image = [NSImage imageNamed:NSImageNameComputer];
NSRect imageRect = NSMakeRect(0, 0, 512, 512);
CGImageRef cgImage = [image CGImageForProposedRect:&imageRect context:nil hints:nil];

从那里,你可以从CGImageRef创建一个新的NSImage,或者使用CGImageDestination * API来编写一个png文件。