PHP GD imagejpeg : output file size is bigger size than original

标签 php imagemagick gd image-manipulation gimp

以下脚本应该创建质量较低且文件大小 (kb) 较小的图像,但它会创建质量较低但文件大小较大的图像。

根据我的测试,原始文件约为 300kb,使用 90% 质量,输出几乎是原来的两倍,使用 100% 质量,输出超过 1mb ...

<?php

$quality = 90;
$path = '/var/www/TEST/';
$inputSrc = $path . 'original.jpg';
$outputSrc = $path . 'after' . $quality . '.jpg';

$handler = imagecreatefromjpeg($inputSrc);
imagejpeg($handler, $outputSrc, $quality);

我认为该问题与 imagejpeg 实现不当有关......

  • 有什么办法可以解决这个问题吗?
  • ImageMagick是更好的解决方案吗?

谢谢

更新

我很好奇,所以我尝试了ImageMagick,不幸的是我得到了类似的结果(稍微好一点)。

完整测试结果:

原始大小:294.6Kb

  • GD(imagejpeg) 90%:581.7Kb
  • GD(imagejpeg) 100%:1.1Mb
  • ImageMagick 90%:431.7Kb
  • ImageMagick 100%:780.9kb

更新2

我用 GIMP 做了更多测试,发现为了获得与原始文件大小非常相似的文件,您必须选中选项使用原始图像的质量设置

现在我更困惑了......因为当我选择该设置时,Gimp 会自动将输出质量更改为 74%(对于示例图像)。
我假设 JPEG 质量值如果低于 100%,则会降低每次保存迭代时的图像质量……但我开始认为我错了。

更新3

使用 ImageMagick 时,无需指定样本的质量,如果将其留空,ImageMagick 将使用在输入图像中检测到的相同质量。
因此,对于示例图像,检测到的质量为 69,输出文件为 326kb。这是迄今为止最好的结果。

这是我正在使用的图像:

enter image description here

最佳答案

我稍微看了一下这个。您可以在 ImageMagick 中向后工作,而不是定义质量并查看结果大小,您可以定义大小并查看结果质量。因此,举一个具体的例子,您可以说您希望输出文件不超过 100kB,如下所示:

convert MShRR.jpg -define jpeg:extent=100k out.jpg

你会得到 99kB,如下所示:

-rw-r--r--@  1 mark  staff    294608 14 Jan 09:36 MShRR.jpg
-rw-r--r--@  1 mark  staff     99989 14 Jan 09:44 out.jpg

在我看来,生成的图像有点色调分离:

enter image description here

您通常可以添加少量模糊来掩盖这一点,如下所示:

convert MShRR.jpg -blur x0.5 -define jpeg:extent=100k out.jpg

enter image description here

YMMV - 您的里程可能会有所不同!!!

关于PHP GD imagejpeg : output file size is bigger size than original,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27936437/

相关文章:

PHP GD - 不同的文本偏移 Mac 与 Linux

php - 在 mysql 准备语句中的非对象错误上调用成员函数

PHP - 阻止文件读取

php - Mysql insert if not exists without unique constraint(不想依赖回滚错误)(PHP + PDO)

php - 字符 : ' (single quotation) when trying to save to mySql 的问题

PHP GD - 调整图像框架/ Canvas 的大小而不是实际图像

imagemagick - 将 ImageMagick 转换为不写出额外信息

image - 在不改变图像尺寸的情况下减小非常大图像的文件大小

imagemagick:附加标签,重力车

php - 如何制作网站的拇指