gpt4 book ai didi

objective-c - NSImage imageNamed : for Mac Mini returns small icon instead of high-res

转载 作者:搜寻专家 更新时间:2023-10-30 20:13:19 25 4
gpt4 key购买 nike

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

我的代码如下:

NSImage *image;
image = [NSImage imageNamed:@"NSComputer"];
[image setSize: NSMakeSize(512,512)];
NSData * tiffData = [image TIFFRepresentation];
NSBitmapImageRep *bitmap = [NSBitmapImageRep imageRepWithData:tiffData];
data = [bitmap representationUsingType:NSPNGFileType properties:nil];
mime = @"image/png";

当我在我的 MacBook 上运行它时,一切都很好,我的电脑有一个 512x512 的图标。当我在我的 Mac Mini 上运行它时,我得到一个 32x32 的图标,该图标已放大到 512x512。

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

最佳答案

我相信图像来自 /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 和 CGI​​mage 之间的更新关系有相当多的了解。

在 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 文件。

关于objective-c - NSImage imageNamed : for Mac Mini returns small icon instead of high-res,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1628824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com