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

时间:2012-11-13 00:03:47

标签: performance image ipad web compression

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

我们正在处理一个“图片库”网络应用程序,在一个页面上有11个1920x1080图像,您可以在iPad上轻扫。我们发现它非常慢,我几乎可以肯定这是因为iPad在内存和页面上同时存在如此多的大图像时遇到了麻烦。

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

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

由于

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

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

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

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

2 个答案:

答案 0 :(得分:4)

  

压缩图像会使图像占用更少的内存吗?

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

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

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

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

  

你应该重新压缩吗?

显示内存时不会占用更少的空间,但可以更快地将加载到内存中。但就是这样。

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

答案 1 :(得分:1)

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

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