Как сжать изображения и сохранить качество с помощью PHP - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу сжать изображения на своем веб-сайте с помощью PHP, оптимизировать его и ускорить загрузку.

Итак, я пытаюсь найти это, и я нашел функцию для генерации WebP изображений. Это действительно хорошо - сжимать изображения, уменьшать их размер и сохранять качество.

$file = 'test.jpg';
$image = imagecreatefrompjpeg($file);
imagewebp($image, 'tes.webp', 80);
imagedestroy($image);

Но после поиска я обнаружил, что расширение WebP не поддерживается многими браузерами, и это может создать большую проблему.

Итак, есть ли решение для сжатия изображений с использованием PHP с сохранением качества?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Ну, вы не сохраняете качество с помощью опций, которые вы установили выше, потому что вы устанавливаете качество на 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();
0 голосов
/ 15 апреля 2019

вам нужно взглянуть на это . простая в использовании библиотека php. уже есть методы изменения размера, сжатия, подгонки, вы можете создавать изображения для различной высоты × ширины. `$ imgrequire 'vendor / autoload.php';

// import the Intervention Image Manager Class
use Intervention\Image\ImageManagerStatic as Image;

// configure with favored image driver (gd by default)
Image::configure(array('driver' => 'imagick')); = 
Image::make($_FILES['image']['tmp_name']);

// resize image
$img->fit(300, 200);

// save image
$img->save('foo/bar.jpg');`
...