Ich habe gerade den PHP-Code geschrieben, um die Bildgröße zu komprimieren. Mein Code komprimiert Bilder, aber nicht die ganze Zeit. In 10% Fällen erhöht es die Bildgröße. Bitte erzähle, warum das passiert? Hier ist mein Code: (Zwei Funktionen hier, ein für PNG-Bilder und andere für JPG-Bilder)Bildkomprimierung erhöht die Dateigröße in 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;
}
Ich hatte das gleiche Problem, mit ein wenig Suche fand ich diesen Beitrag, der aussieht, wie es helfen wird: http://StackOverflow.com/a/ 13258023/1235692 – MrLewk
Bildkomprimierungsalgorithmen können mehr oder weniger effizient sein. Wenn das Bild ursprünglich mit einem Algorithmus erstellt wurde, der effizienter ist als der integrierte Algorithmus von PHP/gd, sehen Sie möglicherweise dieses Ergebnis. – deceze
Wenn das Bild bereits ein "verlustbehaftetes" Format wie "jpeg" ist, dann ist es bereits optimal für die Informationen komprimiert, die es enthält. Jede Komprimierung, die versucht, die gleichen Informationen beizubehalten, erhöht zumindest den Overhead der Komprimierungsmethode. d.h. es wird es größer machen. –