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

发布于 2024-11-24 02:22:02 字数 292 浏览 2 评论 0原文

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

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

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

I'm working on an iOS app using PhoneGap. I ran into an annoying problem where some of my images weren't loading. Thinking it was a cache issue I played around swapping images.

I finally discovered that the issue had to do with the height of my image. After a whole bunch of trial and error I discovered that an image taller than 7864px will not load in the iPad simulator or the iPad itself. It will load fine in Safari. It's not a file size limitation as these are only 45k in size and I'm loading images that are 700k in size elsewhere without a problem.

Has anyone run into this? I can't find any documented restrictions on image dimensions within mobile Safari. If there are restrictions, knowing them would be handy.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ゃ人海孤独症 2024-12-01 02:22:02

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

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

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

所以你会发现看似很小的图像确实很快就填满了内存。现在,如果 iOS 面临内存压力,则无法丢弃部分图像,无论是整个图像还是什么都没有。

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

For native apps, Apple says images larger than 2048x2048 1024x1024 are to be avoided and should be broken down into smaller ones. The problem here is not the file size on disk, but the size in memory: the image has to be decoded and turned into a "flat" representation.

So let's do some math: assume an image 5000x5000 pixels, with 8-bit RGB. This means each pixel occupies 3 bytes:

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

So you see your seemingly small image really fills up the memory very fast. iOS now cannot throw parts away if it's under memory pressure, it's the whole image or nothing.

Your only solution is break down the image into smaller parts. iOS can then remove images that aren't visible any more from memory (I doubt with such a huge image that all parts are visible all the time).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文