PHP уменьшение веса изображения без потери качества

PHP уменьшение веса изображения без потери качества

Вес отдаваемых изображений довольно важный аспект оптимизации скорости загрузки сайта.

Кроме двух распространенных способов уменьшения веса изображения, а именно изменения размеров и ухудшения качества, есть третий способ – удаление сопутствующих данных в файле изображения (чистка метаданных).

Для решения задачи по удалению метаданных из файла изображения можно воспользоваться php-расширением Imagick, ниже привожу пример кода с комментариями:

<?
    $original_file = '/file_path/img_name.jpg';
    $image = new Imagick($original_file);

    // Сохраняет цветовой профиль
    $icc_profile = $image->getImageProfiles('icc', true);
    
    // Очищает изображение от лишней информации
    $image->stripImage(); 

    // Если цветовой профиль не пустой, то возвращает его
    if(!empty($profiles)) {
       $image->profileImage('icc', $icc_profile['icc']);
    }
    
    // записывает изображение в файл 
    $image->writeImage('/file_path/result_image.png');
    
    // или отображает изображение на экране
    header('Content-Type: image/' . $image->getImageFormat());
    echo $image;

Комментарии ()

Вы можете авторизоваться на сайте через:
YandexVkontakte