在这种情况下GD有啥理由压缩我调整大小的图像

Posted

技术标签:

【中文标题】在这种情况下GD有啥理由压缩我调整大小的图像【英文标题】:Is there any reason why GD would compress my resized image in this situation在这种情况下GD有什么理由压缩我调整大小的图像 【发布时间】:2012-03-06 22:39:24 【问题描述】:

我有一个处理 JPG 并调整其大小的过程。

我的意图是不应用任何额外的压缩并简单地修改尺寸,但是,在代码运行后,图像的 Kb 比我预期的要小(而且质量更差)。

我很好奇我是否做错了什么(我是 GD/Imagemagick 的新手)以及是否需要采取其他步骤来保持质量。

这是我的代码:

$src = imagecreatefromjpeg($originalLocation);
$dst = imagecreatetruecolor($destinationWidth, $destinationHeight);
list($oWidth, $oHeight, $type, $attr) = getimagesize($originalLocation);
imagecopyresampled($dst, $src, 0, 0, 0, 0,$destinationWidth,$destinationHeight,$oWidth,$oHeight);
imagejpeg($dst, $destinationLocation, 100 );

源图像为 1024x600 和 ~450k 生成的图像是 640x375,但只有 ~30k

代码中我似乎可以控制压缩的唯一位置是在 imagejpeg 调用中,我传递了 100。为什么一个大于原始大小 50% 的图像缩小到

[编辑] 添加了示例文件:

TIA

【问题讨论】:

从技术上讲,它不是 >50% 的大小 - 与原始的 ~614k 像素相比,它大约是 240k 像素。 30k 图片长什么样子? 您是否查看了目标文件以了解它的外观?对于高质量的 640x375 图像来说,30k 真的很小。也许尺寸不是你想象的那样。 你有能力在不同的主机上进行测试吗?我遇到了很多与不同 GD 版本和操作系统不一致的地方。最好排除这种情况...... @Amber,我听到了,但我希望最终文件具有相似的比率......目前它有很大的不同。 【参考方案1】:

一切看起来都不错,但很明显质量设置被忽略了。尽管the documentation 声明您可以使用最高 100 的质量设置,但我会尝试使用 99 来看看它是否有所作为。

【讨论】:

【参考方案2】:

ImageMagik 完全解决了这个问题,所以,我只是在使用它。

【讨论】:

以上是关于在这种情况下GD有啥理由压缩我调整大小的图像的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP GD lib 压缩和调整图像大小不适用于 png 和 jpg 的奇怪结果

使用巨大(6000+ 宽)图像调整 GD 图像大小(带 CI)

使用gd在php中调整图像大小后的黑色背景

为我的服务器上的 GD 库调整太大的图像

使用 GD 调整图像大小

使用 GD 调整图像大小问题