为什么保存到文件的图像与使用imagejpeg()的资源大小不同?

时间:2017-06-15 16:31:31

标签: php image image-processing compression gd

我使用PHP GD库自动生成图像缩略图 然后,我使用imagejpeg()将调整大小的图像保存到文件中,质量为95%。

当我使用echo file_get_contents($file)输出此文件时,与使用imagejpeg($resource_handle)直接将调整大小后的图像输出到浏览器时相比,图像的文件大小总是大约2.5 - 4倍。

谷歌PageSpeed还告诉我,图像可以压缩75%,这证实了1/4的比例。

这可能是什么原因?

2 个答案:

答案 0 :(得分:0)

我发现手册(http://php.net/manual/en/function.imagejpeg.php)提到默认(未通过质量参数)质量设置约为75%。

这解释了为什么直接输出图像而没有传递给imagejpeg()的任何其他参数会导致图像变小,然后手动设置高于75的质量。

答案 1 :(得分:0)

“质量”设置在JPEG中是无意义的术语。它仅仅是某些编码器用于选择量化表的简化。一个编码器75可以与另一个编码器75完全不同。

要弄明白这一点,你需要查看并比较

  1. 抽样率;
  2. 量化表;和
  3. 霍夫曼表
  4. 用于两张图片。