移动Safari中的图像大小限制?

5
我正在使用PhoneGap开发一款iOS应用程序。我遇到了一个烦人的问题,其中一些图片无法加载。考虑到这可能是缓存问题,我尝试更换了一些图片。
最终我发现问题与我的图片高度有关。经过大量的试错,我发现iPad模拟器或iPad本身无法加载高度超过7864像素的图片。在Safari中可以正常加载。这不是文件大小限制,因为这些图片只有45k大小,并且我在其他地方加载700k大小的图片也没有问题。
有人遇到过这种情况吗?我找不到移动Safari中有关图像尺寸的限制文档。如果有限制,知道它们会很方便。

Opera Mini以全分辨率显示图像。 - user2684592
1个回答

6
对于原生应用,苹果表示不建议使用大于2048x2048 1024x1024的图片,应该将其分解成较小的部分。问题不在于磁盘上的文件大小,而是内存中的大小:图像必须被解码并转换为“平面”表示。

那么我们来算一下:假设一个5000x5000像素、带有8位RGB的图像。这意味着每个像素占用3个字节:

5,000 * 5,000 * 3 = 75,000,000(大约71.5 MiB)

因此,你会发现你看似很小的图片会非常快地填满内存。如果iOS内存不足,它现在无法丢弃部分内容,只能全部丢弃。

你唯一的解决方案是将图像分解成更小的部分。然后,iOS可以从内存中删除不再可见的图像(我怀疑这样一个巨大的图像并不总是所有部分都可见)。


那似乎是指本地UI渲染。在移动Safari(PhoneGap)中也是如此吗?我可以处理这个限制,但这意味着我需要停止在我的CSS中使用Sprites - 这是其他地方推荐的东西。所以我还有点困惑。 ;) - DA.
我引用了原生应用程序文档,因为我没有找到更好的东西。不过,无论是原生应用程序还是Safari,问题都是一样的:一个巨大的图片占用了大量的内存,操作系统无法清除其中的部分(据我所知)。但是,如果你使用许多小图块来平铺一个巨大的图像,那么在当前不可见的情况下,清除这些图像就不成问题了。至少这就是苹果公司说的我们原生开发人员应该这样做的方式。 - DarkDust
所以这就是为什么我无法加载维基百科的13000像素全景照片! - Ian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接