3
我刚刚编写了PHP代码来压缩图像大小。我的代码压缩图像,但不是所有的时间。在10%的情况下,它会增加图像尺寸。请说出为什么会发生这种情况?这里是我的代码(在这里两个功能,一是为PNG图像等的JPG图片)图像压缩增加了PHP中的文件大小
function compressImageSmall($source_url, $destination_url, $quality) {
//$quality :: 0 - 100
$info = getimagesize($source_url);
if ($info['mime'] == 'image/jpeg')
{
$image = imagecreatefromjpeg($source_url);
//save file
imagejpeg($image, $destination_url, $quality);//ranges from 0 (worst quality, smaller file) to 100 (best quality, biggest file). The default is the default IJG quality value (about 75).
//Free up memory
imagedestroy($image);
}
elseif ($info['mime'] == 'image/png')
{
$image = imagecreatefrompng($source_url);
//imagepng($image);
imageAlphaBlending($image, true);
imageSaveAlpha($image, true);
/* chang to png qulity*/
$png_quality = 9 - (($quality * 9)/100);
imagePng($image, $destination_url, $png_quality);//Compression level: from 0 (no compression) to 9.
//Free up memory
imagedestroy($image);
}
//return destination file
return $destination_url;
}
function compressImage($source_url, $destination_url, $quality) {
$info = getimagesize($source_url);
if ($info['mime'] == 'image/jpeg') $image = imagecreatefromjpeg($source_url);
elseif ($info['mime'] == 'image/gif') $image = imagecreatefromgif($source_url);
elseif ($info['mime'] == 'image/png') $image = imagecreatefrompng($source_url);
//save it
//echo '<pre>';print_r(imagejpeg($image));//
imagejpeg($image, $destination_url, $quality);
//return destination file url
return $destination_url;
}
我一直有同样的问题,有点搜索我发现这篇文章看起来像它会帮助:http://stackoverflow.com/a/ 13258023/1235692 – MrLewk
图像压缩算法可能更高效或更低效。如果图像最初是使用比PHP的/ gd的内置算法更高效的算法创建的,则可能会看到此结果。 – deceze
如果图像已经是“有损”的格式,比如'jpeg',那么它已经被最优化地压缩了它所包含的信息。您尝试保留相同信息的任何压缩都至少会增加压缩方法的开销。即它会使它变大。 –