Вес отдаваемых изображений — довольно важный аспект оптимизации скорости загрузки сайта.
Кроме двух распространенных способов уменьшения веса изображения, а именно изменения размеров и ухудшения качества, есть третий способ — удаление сопутствующих данных в файле изображения (чистка метаданных).
Для решения задачи по удалению метаданных из файла изображения можно воспользоваться php-расширением Imagick, ниже привожу пример кода с комментариями:
$originalFile = '/file_path/img_name.jpg'; $outputFile = '/file_path/result_image.jpg'; $image = new Imagick($originalFile); // Сохраняем ICC-профиль (цветовой профиль), если он есть $iccProfile = $image->getImageProfile('icc'); // Удаляем метаданные (EXIF, IPTC и т.д.) $image->stripImage(); // Восстанавливаем цветовой профиль, если он существовал if (!empty($iccProfile)) { $image->profileImage('icc', $iccProfile); } // Сохраняем файл $image->writeImage($outputFile); // Отдаём изображение в браузер header('Content-Type: image/jpeg'); echo $image->getImagesBlob(); $image->clear(); $image->destroy();
Комментарии ()