Я только что написал код PHP, чтобы сжать размер изображения. Мой код сжимает изображения, но не все время. В 10% случаев это увеличивает размер изображения. Скажите, пожалуйста, почему это происходит? Вот мой код: (две функции здесь, одна для изображений PNG и другая для изображений JPG)
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;
}
Php встроенные функции, такие как imagejpeg, imagepngImage удобны для сжатия изображений. Ниже приведен полный пример кода для сжатия изображений: Как сжать файл изображения при загрузке — пример PHP …
Других решений пока нет …