Objective-C - конвертировать изображение в icns - PullRequest
0 голосов
/ 18 декабря 2010

Я пытаюсь создать приложение для Mac OS X, которое преобразует тип изображения в файл icns. Мне интересно, как я могу начать делать это. Любые предложения будут хороши!

Спасибо

Kevin

Ответы [ 3 ]

3 голосов
/ 19 декабря 2010

Используйте API-интерфейсы CGImageSource (например, CGImageSourceCreateWithURL, CGImageSourceCreateImageAtIndex) для загрузки каждого изображения в CGImageRef.Затем используйте API-интерфейсы CGImageDestination (например, CGImageDestinationCreateWithURL, CGImageDestinationAddImage, CGImageDestinationFinalize), чтобы объединить любое количество изображений в один файл значков.Третий параметр CGImageDestinationCreateWithURL будет kUTTypeAppleICNS.

1 голос
/ 25 сентября 2012

1 Создать папку с именем icon.iconset.
2 Добавьте одно или несколько из следующих изображений в папку:

icon_16x16.png
icon_16x16@2x.png
icon_32x32.png
icon_32x32@2x.png
icon_128x128.png
icon_128x128@2x.png
icon_256x256.png
icon_256x256@2x.png
icon_512x512.png
icon_512x512@2x.png

3 Запустите эту команду, и будет создано icon.icns.

iconutil -c icns icon.iconset

http://developer.apple.com/library/mac/#documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Optimizing/Optimizing.html#//apple_ref/doc/uid/TP40012302-CH7-SW2

0 голосов
/ 27 марта 2013

Сохраните NSImage, который содержит значок, в виде файла TIFF (используйте NSData* tiff = [image TIFFRepresentation];, чтобы создать NSData с файлом TIFF, а затем просто используйте [tiff writeToFile:tiffFile atomically:YES];, чтобы сохранить его в некоторой папке), затем используйте NSTask для преобразования TIFF.файл в файл ICNS, используя tiff2icns.

tiff2icns /Users/Me/Desktop/pic.tiff /Users/Me/Desktop/pic.icns

Теперь приведем пример полного кода (изображение представляет собой файл NSImage, значок, а iconFile - строку NSS с окончательным расположением icns):

    NSString* tiffFile = [NSString stringWithFormat:@"%@.tiff",iconFile];

    NSData* tiff = [image TIFFRepresentation];
    [tiff writeToFile:tiffFile atomically:YES];

    NSTask *task = [[NSTask alloc] init];
    [task setLaunchPath:@"/usr/bin/tiff2icns"];

    [task setArguments:[NSArray arrayWithObjects:tiffFile, iconFile, nil]];
    [task launch];
    [task waitUntilExit];

    [[NSFileManager defaultManager] removeItemAtPath:tiffFile error: NULL];

И все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...