Вес отдаваемых изображений — довольно важный аспект оптимизации скорости загрузки сайта.
Кроме двух распространенных способов уменьшения веса изображения, а именно изменения размеров и ухудшения качества, есть третий способ — удаление сопутствующих данных в файле изображения (чистка метаданных).
Для решения задачи по удалению метаданных из файла изображения можно воспользоваться 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();
Комментарии ()