ios - 在 Xcode 中,如何以编程方式从 .icns 文件中提取 .png 图像?

标签 ios xcode ios7

iOS7 和 Xcode 的初学者。如果我理解得很好,.icns 文件是一个容器而不是图像。它包含不同尺寸和不同扩展名(例如 png、jpg)的图标和可能的其他内容。对还是错?

如果是这样,有没有办法从这个文件中提取 512x512.png 版本的图标?有人告诉我必须使用 NSdata 来获取 .icns 文件的内容,然后将其子串化以获取图像数据。但是我不知道 512x512.png 的代码块从哪里开始到哪里结束?

我希望我正确地提出了我的问题。我对此很陌生。

感谢您的帮助

最佳答案

我没有准备好任何代码(尽管您可能想查看 libicns )。

基本上,您必须按顺序读取文件内容。首先,您阅读标题(8 个字节)。然后在标题之后,您逐个阅读图标。每个图标以包含类型和长度的 8 字节标题开头。您阅读了类型和长度,如果类型不匹配,则跳过该图标并继续下一个。

找到所需的图标后,您可以提取它。它在长度字段之后开始,长度为 8 字节长(长度包括仅 icns 文件格式需要的 header )。

请注意,长度以最高有效位在前(大端)存储,但 iOS 是小端。所以你需要转换数字。

图标类型可以被视为四个字符的字符串(没有尾随零)或无符号的 4 字节数字。一些编译器可以处理 'ic09'作为无符号整数常量(注意单引号与字符串的双引号)。

关于ios - 在 Xcode 中,如何以编程方式从 .icns 文件中提取 .png 图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24567389/

相关文章:

ios - UITableView ScrollView 不会到框架顶部

iOS 7 如何使用 NSUserDefaults 保存一个 NSNumber?

ios - 推送 View Controller 和添加 Controller View 有什么区别?

objective-c - NSTimer还是暂停操作?

ios - 使用正则表达式检索链接数组 - Swift

iphone - 带有两行标签的 UIBarButtonItem 宽度

swift - IBM Mobile First Platform Foundation 在 XCode 控制台上打印日志

ios - 现有项目的 Xamarin iOS 免费配置失败

ios - iOS 7 上的自动布局崩溃,在 iOS 8 上运行良好

iphone - 如何集成bitly api来缩短我在iphone sdk中的链接