PHP:如何在不损失可见质量(自动)的情况下压缩图像?

2022-08-30 21:05:49

我想知道如何自动计算出最佳压缩率(小文件大小+无质量损失)。

目前,我正在使用imagejpeg()与每个.$quality = 85.jpg

PageSpeed(Chrome插件)建议,降低几张图片的质量以节省一些kb。减少的百分比是不同的。

我想写一个cronjob来抓取特定的目录并优化每个图像。

PageSpeed或TinyPNG如何找出最佳的优化质量,PHP或其他服务器端语言是否可以做到这一点?


答案 1

TinyPNG使用pngquant

Pngquant可以选择设置所需的质量,类似于JPEG。您可以运行类似如下的操作:

<?php system('pngquant --quality=85 image.png'); ?>

Pngquant网站有示例代码,展示了如何使用PHP中的pngquant


对于 JPEG,您可以应用无损 jpegcrush

JpegMini(商业)和jpeg存档(免费)是有损的,可以自动找到JPEG的最低质量。

在 PHP 中,您可以通过观察重新压缩后的大小变化来粗略估计压缩了多少 JPEG。以相同或更高质量重新压缩的 JPEG 的文件大小不会有太大变化(但会丢失视觉质量)。

如果重新压缩 JPEG 并看到文件大小减半,请保留重新压缩的版本。如果您发现文件大小仅下降了 10-20%,请保留原始文件。

如果你正在压缩自己,请使用MozJPEG(这是一个在线版本)。


答案 2

推荐