Я использую следующий код для создания эскизов изображения, но качество не на должном уровне. Нужна помощь
<?php
function make_thumb($src,$dest,$desired_width)
{
$source_image=imagecreatefromjpeg($src);
$width = imagesx($source_image);//width of the image.
$height = imagesy($source_image);//height of the image.
$desired_height = floor($height*($desired_width/$width));
$virtual_image = imagecreatetruecolor($desired_width,$desired_height);
imagecopyresized($virtual_image,$source_image,0,0,0,0,$desired_width,$desired_height,$width,$height);
$fname= basename($src);
$dir="upload/thumbs/";
imagejpeg($virtual_image,$dir.$fname);
}
?>
Миниатюры имеют соответствующий размер, но не соответствующего качества.
Есть несколько вещей, которые вы можете сделать, например, сделать изображение немного больше (передискретизировать) по размеру и принудительно уменьшить его при выводе по стилю или тому, что у вас есть. <img style="max-width: 80%;" />
, но, вероятно, ваша проблема в том, что ваше сжатие не установлено на вашем imagejpeg()
:
// This function has a quality setting (3rd value ranges from 0-100)
imagejpeg($virtual_image,$dir.$fname,100);
Вы должны изменить образец изображения, а не просто изменить размер.
использование imagecopyresampled()
как это:
imagecopyresampled($virtual_image,$source_image,0,0,0,0,$desired_width,$desired_height,$width,$height);