【发布时间】:2017-11-18 06:00:41
【问题描述】:
我正在使用 PHP GD 库自动从图像生成缩略图。
然后我使用imagejpeg() 以95% 的质量将调整大小的图像保存到一个文件中。
当我使用echo file_get_contents($file) 输出这个文件时,与使用imagejpeg($resource_handle) 直接将调整大小的图像输出到浏览器相比,图像的文件大小总是大约2.5 - 4 倍。
Google PageSpeed 还告诉我图像可以压缩 75%,这证实了 1/4 的比例。
这可能是什么原因?
【问题讨论】:
-
不确定这是否有意义。可以建议不要使用
file_get_contents,因为readfile会更可取且性能更高 - 直接输出缓冲区。 -
@ficuscr 这确实会提高服务器端的性能,但不会改变输出图像的大小。
-
给我看。给我你所描述的证据。使用 5x5 像素的小图像。分享输出。什么构成了额外的位?持久化的文件可能没有被压缩吗?
-
我想不出一种方法来“证明”我所描述的内容,但我发现它在大约 50 个不同的图像中是一致的。保存到文件的图像以 5% 的压缩率保存,而另一个则根本不压缩。在这两种情况下,我都使用 imagejpeg()。我想知道保存到文件而不是直接输出是否会影响 imagejpeg() 函数的文件大小。
-
@ficuscr 感谢您的帮助,我在函数的文档中找到了答案。
标签: php image image-processing compression gd