NSImage imageNamed: для Mac Mini возвращается маленькая иконка вместо высокого разрешения

StackOverflow https://stackoverflow.com/questions/1628824

Вопрос

При использовании метода imageNamed: NSImage для получения значка текущего компьютера, если я работаю на 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 содержит совсем немного об обновленных отношениях между 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];

Оттуда вы можете создать новый NSImage из CGImageRef или использовать API-интерфейсы CGImageDestination * для написания png-файла.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top