【问题标题】:Bundle a LOT of images/icons捆绑大量图像/图标
【发布时间】:2015-12-07 18:01:27
【问题描述】:

在捆绑包中包含大量图片的最佳方式是什么?我有一个(游戏)项目的索引,因此大约有 4000-5000 个图像文件(总共 27mb,所以没那么大)。只需将整个地图包含在包中,或者可能首先编写一个将它们转换为 NSData 的脚本?我可以想象会有一种聪明的方法来做到这一点,这样应用程序就不必单独查看所有图像来找到一个。很想听听你的想法。

【问题讨论】:

  • 提示:请务必将它们放在资产目录中,因为这可能会减小尺寸,只有适合目标设备的图像才会被打包到 IOS9 的 IPA 中
  • @RyanHeitner APK 是一个 Android 术语,我想你的意思是 IPA :)
  • 嘿,只需将图片包含为 zip 存档并在首次运行时解压 - 快速简单
  • 我不推荐 @sage444 的建议,因为它会阻止 App Thinning 在 iOS 9 中发生。App Store 无论如何都会压缩您的应用程序,因此这几乎没有影响(这适用于任何iOS 版本)。

标签: ios xcode image bundle


【解决方案1】:

27mb 的下载量并不大,因此最简单的选择是将它们放入资产目录中,正如 Ryan Heitner 在他的评论中提到的那样,这将允许 App Thinning 在 iOS 9 中进行。

我不确定你的意思是什么:

我可以想象会有一种聪明的方法来做到这一点,这样应用就不必逐个浏览所有图像来找到一个

每张图片都需要有一个唯一的名称(无论您拥有多少资产都是如此),并且您的代码会按该名称引用图片,因此它不必“逐个查看所有图片以找到一个”。

或者,如果您真的想减小初始下载大小,您可以使用On Demand Resources(iOS 9 的另一个即将推出的功能)将它们存储在 Apple 服务器上并按需加载到您的代码中。不过,您可能不会只针对 iOS 9,因此在这种情况下,您需要自己托管资源并使用标准技术加载它们(请参阅hereherehereuse a library

【讨论】:

  • 感谢您的回答@SteveWilford。我相信我在某处读到过,也可以存储图像的地址,以便程序可以更快地通过图像数组而不是实际图像。但我可能会误会,因为这也可能只是创建 CoreData 的情况。无论如何,我会将它放在资产目录中,看看图像在 tableView 中显示的速度。
  • @SecondLemon 从资产目录加载图像将非常快,因为它们是按名称键入的。如果您的目录中有一个名为“mainBackground”的图像,它将使用[UIImage imageNamed:@"mainBackground"]; 加载到UIImage
【解决方案2】:

您应该将它们打包在texture atlas 中。

然后,应该通过文件夹引用(蓝色文件夹图标)而不是组(黄色文件夹图标)将纹理图集文件导入您的捆绑包中。

在文件夹引用中捆绑导入的图像不会在打包时被 Xcode 优化。因此,您可以使用imageOptim 进行自己的文件优化。它可以比 Xcode 对 JPEG 和 PNG 图像进行更多的压缩。

【讨论】:

  • 感谢@Nicolas 的建议。我一定会调查的!
猜你喜欢
  • 2019-11-26
  • 1970-01-01
  • 2018-06-21
  • 2016-01-31
  • 2012-12-30
  • 2013-03-23
  • 2014-12-23
  • 2014-08-28
  • 1970-01-01
相关资源
最近更新 更多