4

这是关于系统(特别是网络浏览器)如何处理压缩图像的架构/概念问题。

我们正在处理一个工作中的“图片库”网络应用程序,该应用程序在一个页面上有 11 个 1920x1080 的图像,您可以在 iPad 上滑动浏览。我们发现它非常慢,我几乎可以肯定这是因为 iPad 无法同时在内存和页面上拥有如此多的大图像。

有些人建议我们更多地压缩图像;他们目前是 PNG,他们想将它们重新压缩为 JPG。显然文件大小会更小,但除非 iPad(和其他人)有办法直接将压缩图像渲染到屏幕(帧缓冲区),否则我认为他们必须在渲染之前将图像解压缩到内存中. 在这种情况下,压缩似乎不会影响渲染它们的性能。(除了“更多”解压缩它们的轻微增加处理能力。)

我的理解和假设是否正确?我们应该调整大小还是重新压缩图像?

谢谢

更多信息 - 在你告诉我“是的压缩图像更小”之前阅读此内容 - 我是开发人员,而不是用户:

使用更少的空间与使用更少的内存不同。我们没有存储问题,我们遇到了渲染性能问题。代码很简单,只是在一个 div 和下一个 div 之间进行动画处理,为画廊提供“滑动”效果。

当我们从方程中删除图像时,性能很好;所以我相当确定瓶颈是图像,而不是代码。

被问到的问题是“压缩是否会使图像使用更少的内存”,因为其他人希望更多地压缩图像以获得性能。据我了解压缩的架构,您仍然必须将其解压缩到内存中的原始大小才能使用它,因此压缩不会影响内存使用;只有存储和传输。

4

2 回答 2

3

压缩图像是否会使图像使用更少的内存?

不,如果图像显示在监视器上,将使用相同数量的内存(像素)。

压缩适用于图像的容器,通常是文件或临时内存缓冲区,但在屏幕上使用相同。

这是因为您需要分配要显示的每个像素。

对于 24 位的 1920x1080 图像,它将使用 1920 x 1080 x 3 字节(RGB 中每个颜色分量一个字节 -> 1 字节 = 8 位),或 6,220,800 字节(大约 6 mb)。

你应该重新压缩吗?

显示时它不会占用更少的内存空间,但可以更快地加载内存中。但仅此而已。

现在应用程序需要决定是仅在显示图像时解压缩(这将导致延迟)还是全部解压缩并能够立即显示它们。此决定是基于应用程序的,因此您需要检查特定的应用程序。

于 2012-11-13T00:35:03.047 回答
0

我不能专门针对 iOS 说话,但最好的办法是将解压缩卸载到 GPU 上,这需要一些相当复杂的架构工作。所以我认为使用更高的压缩比不太可能真正提高应用程序的性能。

但是,将图像拆分为较小的图块是我建议您尝试的常见解决方案。

于 2012-11-13T00:35:46.960 回答