使用NSImage
的{{1}}方法获取当前计算机的图标时,如果我在Mac Mini上运行,那么我会得到一张低分辨率图像。如果我从MacBook运行相同的代码,那么我会得到一个像我期望的高分辨率图标。
我的代码如下:
imageNamed:
当我在MacBook上运行时,一切都很好,我得到了一台512x512的电脑图标。当我在我的Mac Mini上运行它时,我得到一个32x32图标,已经升级到512x512。
关于如何获得高分辨率版本的任何想法?
答案 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文件。