我正在使用PhoneGap开发iOS应用。我遇到了一个烦人的问题,我的一些图像没有加载。我认为这是一个缓存问题,我围绕交换图像。
我终于发现问题与我的图像高度有关。经过一系列的反复试验后,我发现高于7864px的图像无法加载到iPad模拟器或iPad本身。它将在Safari中正常加载。这不是文件大小限制,因为它们只有45k大小,我正在其他地方加载大小为700k的图像而没有问题。
有没有人碰到这个?我在移动Safari中找不到任何有关图像尺寸的文档限制。如果有限制,了解它们会很方便。
答案 0 :(得分:5)
对于原生应用,Apple表示大于 2048x2048 1024x1024 are to be avoided的图像应该分解为较小的图像。这里的问题不是磁盘上的文件大小,而是内存中的大小:图像必须被解码并变成“平面”表示。
让我们做一些数学运算:假设图像为5000x5000像素,具有8位RGB。这意味着每个像素占用3个字节:
5,000 * 5,000 * 3 = 75,000,000(约71.5 MiB)
所以你看到你看似很小的图像真的非常快地填满了内存。如果它处于内存压力下,iOS现在不能丢弃部分,它是整个图像或什么都没有。
您唯一的解决方案是将图像分解为更小的部分。然后,iOS可以从内存中删除不再可见的图像(我怀疑这么大的图像,所有部分都是一直可见的。)