移动旅行中的图像大小限制?

我正在使用PhoneGap开发iOS应用程序。 我遇到了一个烦人的问题,我的一些图像没有加载。 我认为这是一个缓存问题我在交换图像。

我终于发现问题与我的图像高度有关。 经过一系列的反复试验后,我发现高于7864px的图像无法加载到iPad模拟器或iPad本身。 它将在Safari中正常加载。 这不是文件大小限制,因为它们只有45k大小,而且我正在其他地方加载700k大小的图像而没有问题。

有没有人碰到这个? 我找不到移动Safari中图像尺寸的任何记录限制。 如果有限制,了解它们会很方便。

对于原生应用程序,Apple表示要避免大于2048×2048 1024×1024的图像,应将其分解为较小的图像。 这里的问题不是磁盘上的文件大小,而是内存中的大小:图像必须被解码并变成“平面”表示。

所以让我们做一些数学运算:假设图像为5000×5000像素,具有8位RGB。 这意味着每个像素占用3个字节:

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

所以你看到你看似很小的图像真的非常快地填满了内存。 如果它处于内存压力下,iOS现在不能丢弃部分,它是整个图像或什么也不是。

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