5

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

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

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

4

1 回答 1

6

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

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

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

所以你看到你看似很小的图像真的很快就填满了内存。iOS 现在不能在内存压力下丢弃部分,它是整个图像或什么都没有。

您唯一的解决方案是将图像分解成更小的部分。然后,iOS 可以从内存中删除不再可见的图像(我怀疑图像如此巨大以至于所有部分都始终可见)。

于 2011-07-17T18:37:56.513 回答