Problem zmiany rozmiaru obrazu w PHP - gd tworzy brzydkie obrazy o zmienionym rozmiarze
Tworzę miniatury o stałej wysokości i szerokości z mojego skryptu PHP za pomocą następującej funkcji
/*creates thumbnail of required dimensions*/
function createThumbnailofSize($sourcefilepath,$destdir,$reqwidth,$reqheight,$aspectratio=false)
{
/*
* $sourcefilepath = absolute source file path of jpeg
* $destdir = absolute path of destination directory of thumbnail ending with "/"
*/
$thumbWidth = $reqwidth; /*pixels*/
$filename = split("[/\\]",$sourcefilepath);
$filename = $filename[count($filename)-1];
$thumbnail_path = $destdir.$filename;
$image_file = $sourcefilepath;
$img = imagecreatefromjpeg($image_file);
$width = imagesx( $img );
$height = imagesy( $img );
// calculate thumbnail size
$new_width = $thumbWidth;
if($aspectratio==true)
{
$new_height = floor( $height * ( $thumbWidth / $width ) );
}
else
{
$new_height = $reqheight;
}
// create a new temporary image
$tmp_img = imagecreatetruecolor( $new_width, $new_height );
// copy and resize old image into new image
imagecopyresized( $tmp_img, $img, 0, 0, 0, 0, $new_width, $new_height, $width, $height );
// save thumbnail into a file
$returnvalue = imagejpeg($tmp_img,$thumbnail_path);
imagedestroy($img);
return $returnvalue;
}
i nazywam tę funkcję następującymi parametrami
createThumbnailofSize($sourcefilepath,$destdir,48,48,false);
ale problem polega na tym, że wynikowy obraz jest bardzo złej jakości, gdy wykonuję tę samą operację ze sklepem Adobe Photo, wykonuje dobrą konwersję .. dlaczego tak jest? Nie mogę znaleźć żadnego parametru jakości, dzięki któremu zmienię jakość obrazu wyjściowego.