如果我通过以下方式创建一个NSImage
:
NSImage *icon = [NSImage imageNamed:NSImageNameUser];
它只有一个表示形式,一个
NSCoreUIImageRep
,似乎是一个私有类。我想将此图像存档为
NSData
,但如果我要求TIFFRepresentation
,则会得到一个小图标,而最初创建的真正NSImage
似乎是矢量的,并且可以缩放以填充我的图像视图。我有点希望以这种方式制作的图像会有一个
NSPDFImageRep
,我可以使用它。有什么想法如何获取此
NSImage
的NSData
(最好是矢量版本或较大的位图版本)?更新
与一些人on Twitter交谈后,他们建议这些图像的真正来源是多分辨率icns文件(可能根本不是矢量)。我找不到这些文件在磁盘上的位置,但听起来很有趣。
此外,他们建议我创建系统NSImage,并手动将其渲染为我的高分辨率NSImage。我现在正在这样做,它对我的需求有效。我的代码:
+ (NSImage *)pt_businessDefaultIcon
{
// Draws NSImageNameUser into a rendered bitmap.
// We do this because trying to create an NSData from
// [NSImage imageNamed:NSImageNameUser] directly results in a 32x32 image.
NSImage *icon = [NSImage imageNamed:NSImageNameUser];
NSImage *renderedIcon = [[NSImage alloc] initWithSize:CGSizeMake(PTAdditionsBusinessDefaultIconSize, PTAdditionsBusinessDefaultIconSize)];
[renderedIcon lockFocus];
NSRect inRect = NSMakeRect(0, 0, PTAdditionsBusinessDefaultIconSize, PTAdditionsBusinessDefaultIconSize);
NSRect fromRect = NSMakeRect(0, 0, icon.size.width, icon.size.width);;
[icon drawInRect:inRect fromRect:fromRect operation:NSCompositeCopy fraction:1.0];
[renderedIcon unlockFocus];
return renderedIcon;
}
我尝试将此作为我的答案发布,但是我没有足够的声望?