1

随着 iPhone 5 的新屏幕分辨率和宽高比,在处理全屏(或大部分全屏)图像时,似乎有两种方法可以利用新的屏幕空间:

  • 包括两个图像 bg@2x.png 和 bg-h568@2x.png 并检查设备的主屏幕边界以确定加载哪个。
  • 仅包含一个文件,但使其成为 iPhone 5 的完整分辨率

(还有其他方法:拉伸、平铺和/或使用 Quartz 绘图。)

这两种选择都有缺点:

  • 包含两个文件会增加应用程序的包大小
  • 在 4 上加载 iPhone 5 的视网膜图像会在屏幕上显示图像数据时剪切图像数据,但仍会消耗相同数量的内存资源

我对更好地了解第二个缺点的细节特别感兴趣。

我认为如果我可以进一步使用这个整合图像的想法,它将保存应用程序包(和我的设计师)......

假设我有一张图像,纵向占用 320pt x 480pt,横向占用 480pt x 320pt(宽 x 高)。

(编辑:最初我没有考虑其他一些重要的花絮。为了完整起见,我在这里包括这些想法)

如果我们创建一个分辨率为 480pt x 480pt 的图像文件而不是横向和纵向文件,这将阻止应用程序包包含两个文件,每个文件都包含 320pt x 320pt 区域的重复图像数据。但是,这个大的方形图像将在角落中包含四个 80pt x 80pt 的象限,这些象限不会被看到。在所有条件相同的情况下,应用程序包中的图像数据仍应减少 20%。

重读比尔的“iBooks Author Experiment”,内存需求很容易弄清楚:

  • 横向或纵向:640 * 960 * 4 = 2,457,600
  • 大广场:960 * 960 * 4 = 3,686,400

加载大方块所需的内存比加载适合屏幕大小的图像多 50%。很明显,应用程序包中的节省无法与资源消耗相提并论!

但是,如何将其扩展到一个包含 iPhone 5 和 iPhone 4 - 568pt x 568pt 的巨大正方形?应用程序包中只有一个文件(巨型正方形),而不是四个文件(iP4 横向、iP4 纵向、iP5 横向、iP5 纵向)。可节省约 60%。

命中的资源呢?

  • iPhone 5 横向或纵向:1136 * 640 * 4 = 2,908,160
  • 巨人广场:1136 * 1136 * 4 = 5,161,984

iPhone 4 的内存增加了 110%,iPhone 5 的内存增加了 77.5%。

我最初的问题大致分为两个部分:1. 我是否正确理解这一点,以及 2. 这种权衡是否明智。

我希望我的编辑(受比尔回答的启发)表明我现在确实了解这些东西。而且,如果新发现的知识是正确的,那么#2 几乎可以回答自己。:-)

4

1 回答 1

2

一般来说,你会得到它。

假设您有大方形图像并且它是某种平铺图案(亚麻等),那么您可以使用 ImageIO 以您需要的大小加载裁剪后的图像,这将使用一些额外的内存来解压缩图像,但一旦完成它只会消耗填充背景需要什么。

我建议不要缩放图像。

但另一方面,使用 3 张图片(foo、foo@2x 和 foo-h568@2x)而不是 1 张图片发布应用程序更有意义。我想说你应该使用一张图片的唯一方法是,如果你接近(我认为)50MB 的 3G/LTE 下载大小。

于 2012-10-14T05:06:02.290 回答