凭借iPhone 5的新屏幕分辨率和宽高比,在处理全屏(或大部分是全屏)图像的图像时,似乎有两种方法可以利用新的屏幕空间:
(还有其他方法:用Quartz拉伸,平铺和/或绘图。)
这两个选项都有缺点:
我特别感兴趣的是更好地理解第二个缺点的细节。
我认为如果我可以进一步使用这种整合图像的想法,它会保存应用程序包(和我的设计师)......
假设我的图像在纵向上占用320pt x 480pt,在横向(宽x高)中占用480pt x 320pt。
(编辑:最初我没有考虑过其他几个重要的花絮。为了完整起见,我在这里包含了这些想法)
如果我们以480pt x 480pt分辨率而不是横向和纵向文件创建单个图像文件,则会阻止应用程序包具有两个文件,每个文件包含320pt x 320pt区域的重复图像数据。然而,这个大方形图像将在角落中包括四个80pt x 80pt象限,这些象限将不会被看到。在所有条件相同的情况下,应用程序包中的图像数据仍应减少20%。
重新阅读Bill的"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%。
资源如何?
1136 * 640 * 4 = 2,908,160
1136 * 1136 * 4 = 5,161,984
iPhone 4的内存增加了110%,iPhone 5的内存增加了77.5%。
我原来的问题大致分为两部分:1。我是否理解正确,2。这种权衡取舍是明智之举。
我希望我的编辑(在比尔的答案的刺激下)表明我现在明白这一点。并且,如果新发现的知识是正确的,那么#2几乎可以回答自己。 : - )
答案 0 :(得分:2)
一般来说,你得到它。
假设您有大方形图像并且它是某种平铺图案(亚麻等),那么您可以使用ImageIO以您需要的大小加载裁剪后的图像,这将使用一些额外的内存解压缩图像但是一旦完成它只会消耗填充背景所需的东西。
我建议不要缩放图像。
另一方面,运送带有3张图像的应用程序(foo,foo @ 2x和foo-h568 @ 2x)而不是1会更有意义。如果你接近(我认为)50MB的3G / LTE下载大小,那么我说你应该使用一张图像的唯一方法是。