Problema de redimensionamento de imagem em PHP - gd cria imagens redimensionadas feias

Eu estou criando miniaturas de altura e largura fixas do meu script PHP usando a seguinte função

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

e eu chamo essa função com os seguintes parâmetros

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

mas o problema é que a imagem resultante é de qualidade muito ruim, quando eu executo a mesma operação com o Adobe Photo Shop, ele realiza uma boa conversão .. por que é assim? Não consigo encontrar nenhum parâmetro de qualidade, através do qual altero a qualidade da imagem de saída.

questionAnswers(5)

yourAnswerToTheQuestion