为什么在使用HTTP gzip压缩后,PNG文件大小不会改变?

26
4个回答

43

PNG已经是一种压缩数据格式。使用GZIP进行压缩不太可能减小文件大小,反而会使其变大。

我很惊讶您在对JPG进行GZIP压缩时看到了优势,因为它们也是已经压缩过的。

参见此处,了解Google有关使用GZIP的建议。他们建议不要将其应用于图像。


16

PNG图像格式已经内部使用了deflate压缩技术,因此如果在此基础上再使用HTTP压缩,通常不会看到传输大小的明显减小。因此,您应该从提到的列表中删除image/png,以避免在服务器和客户端上进行冗余的压缩步骤而浪费CPU周期。


8
如果您想要使PNG文件变得更小,可以使用 https://tinypng.com/ 或其他PNG优化工具。是的,它完全支持 alpha 通道。

使用tinypng.com,我刚刚将一个14k字节的png压缩到了540字节!! - user2677034
它支持有效的1位Alpha通道 - 因此可以是100%透明或100%不透明。这可能会在某些背景下产生可怕的抗锯齿效果,但如果您知道它将要放置的背景颜色,您可以调整图像边缘以获得良好的混合效果。 - Simon_Weaver
@Pawel 我希望我错了 :) 但每次我使用tinypng时,它都会产生锐利的边缘。等我醒来后再试试这个。 - Simon_Weaver
Tinypng 在客户端使用时有库吗? - rraallvv
2
@rraallvv 有命令行界面,但它使用的是付费远程服务。有免费的本地替代方案 https://dev59.com/FF4b5IYBdhLWcg3w5VE9 - Pawel
显示剩余2条评论

6

PNG是一种无损图像压缩格式。它基本上使用空间压缩来完全保留原始图像质量。如果要进一步压缩,就需要使用另一种无损格式来查看是否效果更好。

没有必要使用GZIP(或等效物),因为这只会增加客户端解压缩图像的处理。

对于JPEG,你所能做的最好的事情就是确保你为你的目的使用了正确的分辨率和质量设置。GZIP的效果不稳定。确保从中删除所有元数据(除非你需要这些信息在客户端,但最好将这些数据保存在数据库中)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接