【问题标题】:Objective-C - Convert an image to icnsObjective-C - 将图像转换为 icns
【发布时间】:2011-05-27 14:35:25
【问题描述】:

我正在尝试为 Mac OS X 创建一个将图像类型转换为 icns 文件的应用程序。我想知道如何才能开始这样做。任何建议都会很好!

谢谢,

凯文

【问题讨论】:

  • Icon Composer 有什么问题?您所要做的就是将图像粘贴到它的位置。
  • 图标编辑器。它是 XCode 的一部分。
  • 我必须以编程方式进行。

标签: objective-c image macos operating-system


【解决方案1】:

使用 CGImageSource API(例如,CGImageSourceCreateWithURLCGImageSourceCreateImageAtIndex)将每个图像加载到CGImageRef。然后使用 CGImageDestination API(例如,CGImageDestinationCreateWithURLCGImageDestinationAddImageCGImageDestinationFinalize)将您拥有的任意数量的图像组合到一个图标文件中。 CGImageDestinationCreateWithURL 的第三个参数是kUTTypeAppleICNS

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

    将包含图标的 NSImage 保存为 TIFF 文件(使用 NSData* tiff = [image TIFFRepresentation]; 使用 TIFF 文件创建 NSData,然后只需使用 [tiff writeToFile:tiffFile atomically:YES]; 将其保存在某个文件夹中),然后使用 NSTask 转换 TIFF使用tiff2icns 将文件复制到 ICNS 文件。

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

    现在,一个完整代码的例子(image是一个NSImage文件的icon,iconFile是一个NSString,带有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];
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 2012-08-13
      • 2018-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多