Bildgrößenanpassung in PHP - gd erstellt hässliche Bilder mit Größenanpassung

Mit der folgenden Funktion erstelle ich aus meinem PHP-Skript Thumbnails mit fester Höhe und Breite

/*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;
}

und ich rufe diese Funktion mit folgenden Parametern auf

createThumbnailofSize($sourcefilepath,$destdir,48,48,false);

Aber das Problem ist, dass das resultierende Bild von sehr schlechter Qualität ist. Wenn ich den gleichen Vorgang mit Adobe Photo Shop durchführe, führt es eine gute Konvertierung durch. Warum ist es so? Ich kann keinen Qualitätsparameter finden, über den ich die Qualität des Ausgabebilds ändere.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage