Низкое качество в php imagejpeg() с качеством=100

#php #gd

Вопрос:

Я стараюсь использовать простой скрипт изменения размера/обрезки для создания миниатюр.

 $imageObject = imagecreatefromstring(file_get_contents($path.$image)); $originalWidth = imagesx($imageObject); $originalHeight = imagesy($imageObject); $originalAspect = $originalWidth/$originalHeight; $thumbAspect = $thumbWidth/$thumbHeight; $newWidth = 0; $newHeight = 0; if($originalAspect gt;= $thumbAspect) {  $newHeight = $thumbHeight;  $newWidth = $originalWidth/($originalHeight/$thumbHeight); } else {  $newWidth = $thumbWidth;  $newHeight = $originalHeight/($originalWidth/$thumbWidth); }  $thumb = imagecreatetruecolor($thumbWidth,$thumbHeight); $dstX = 0-($newWidth-$thumbWidth)/2; $dstY = 0-($newHeight-$thumbHeight)/2; if($ext=='.png') {  imagealphablending($thumb, false);  imagesavealpha($thumb, true);  $transparentColor = imagecolorallocatealpha($thumb, 0, 0, 0, 127);  imagefill($thumb, 0, 0, $transparentColor); } $crop = imagecopyresampled($thumb,$imageObject,$dstX,$dstY,0,0,$newWidth,$newHeight,$originalWidth,$originalHeight); switch ($ext) {  case '.jpg': $save = imagejpeg($thumb, $cacheFile, 100); break;  case '.png': $save = imagepng($thumb, $cacheFile, 2); break;  case '.gif': $save = imagegif($thumb, $cacheFile, 90); break;  case '.webp': $save = imagewebp($thumb, $cacheFile, 90); break; }  $destroy = imagedestroy($thumb);  

Когда этот скрипт преобразует форматы png или webp, никаких проблем. Но если он преобразует форматы jpeg (особенно небольшие изображения, такие как 400×800), качество получаемых изображений очень низкое, даже если я установил параметр качества в imagejpeg как 100. Я делаю что-то не так или функция GD работает таким образом?