Если я создам NSImage
через что-то вроде:
NSImage *icon = [NSImage imageNamed:NSImageNameUser];
, у него есть только одно представление, NSCoreUIImageRep
, которое кажется частным классом.
Я быЯ хотел бы заархивировать это изображение как NSData
, но если я попрошу TIFFRepresentation
, я получу маленькую иконку, когда реальный NSImage
, который я первоначально создал, казался векторным и увеличился, чтобы хорошо заполнить мои изображения.
Я надеялся, что у изображений, сделанных таким образом, будет NSPDFImageRep
, который я мог бы использовать.
Любые идеи, как я могу получить NSData
(перед векторной версией или, что хуже, крупномасштабное растровое изображениеверсия) этой NSImage
?
ОБНОВЛЕНИЕ
Поговорили с некоторыми людьми в Твиттере , и они предположили, что реальный источник этих изображенийфайлы с несколькими разрешениями (возможно, не векторные).Я не мог найти их расположение на диске, но тем не менее интересно было услышать.
Кроме того, они предложили мне создать системный 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;
}
(пытался опубликовать это как мой ответ, но мне не хватает репутации?)