Ну, вы не сохраняете качество с помощью опций, которые вы установили выше, потому что вы устанавливаете качество на 80,
. Вы можете использовать PHP Imagick для изменения размера изображений во время выполнения, или вы можете сохранить изображения.как и без сжатия и имеет скрипт cron для выполнения действия или сам веб-сервер.
Чтобы использовать JPG, вы можете рассмотреть следующие варианты:
$compression = 80; // set from 75-85 generally
$iMagick->setImageCompressionQuality($compression);
$iMagick->setImageFormat("jpg");
$iMagick->stripImage(); // saves lot by removing meta
Пример (обратите внимание, что этот пример изменяет размеры до максимальной ширины 1920):
$iMagick = new Imagick($file);
$iMagick->setImageResolution(72,72);
$iMagick->resampleImage(72,72,imagick::FILTER_UNDEFINED,1);
$geometry = $iMagick->getImageGeometry();
if ($geometry['height'] > 1920 || $geometry['width'] > 1080) {
$iMagick->scaleImage(1920, 0);
if($geometry['height'] > $resizeHeight) {
$iMagick->scaleImage(0, 1080);
}
}
$iMagick->setImageCompression(Imagick::COMPRESSION_JPEG);
$iMagick->setImageCompressionQuality($compression);
$iMagick->setImageFormat("jpg");
$iMagick->stripImage();
$iMagick->writeImage($file);
$Imagick->clear();