我正在用php做一个图片分享网站。我读到了google的pagespeed,他们说我需要优化我的图片,所以我一直在尝试使用imagejpeg,然后希望我能在png和gif中使用基本相同的代码。
这是我目前拥有的代码:
$img = imagecreatefromjpeg($original);
if ($extension === "jpg" || $extension === "jpeg"){
$location = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $id . "/fullsize." . $extension;
$temp = fopen($location, 'w');
imagejpeg($img, $location, 80);
fclose($temp);
}它负责获取$original上的图像,并将通过imagejpeg保存的副本保存到$location。
但有时生成的文件会比原始文件大!这就是我被难住的地方。
为什么会发生这种情况?
我怎样才能让它停止发生呢?
我正在尝试减少图像文件的大小而不影响它们的外观,有没有比这更好的方法呢?
谢谢,
利亚姆
发布于 2012-09-27 11:41:55
imagejpeg只会缩小文件,如果你保存它的质量设置比产生的原始文件低
例如:
imagejpeg($gd, 'temp.jpg', 50);
$temp = imagecreatefromjpeg('temp.jpg');
imagejpeg($gd, 'temp2.jpg', 70);可能会生成更大的temp2文件,因为它的质量设置更高,这大致相当于“不要压缩太多”。
如果不经过整个jpeg压缩过程,就无法预测给定图像和质量设置的最终输出大小。您可能必须对图像进行几次尝试重新压缩,并降低每次的质量设置,直到开始出现一些收缩。
当然,如果你把质量降低得太低,你基本上会把图像搞得一团糟,而且肯定会引入可见的伪像。
https://stackoverflow.com/questions/12613731
复制相似问题