Оптимизация размера файла JPG - PHP, ImageMagick и скорость страницы Google
-
23-09-2019 - |
Вопрос
У меня есть код фотогалереи, который изменяет размер изображения и создает миниатюры.Для этого я использую ImageMagick.Я запустил страницу галереи с помощью Google Page Speed tool, и она показала, что изображения с измененным размером и миниатюры содержат около дополнительных 10 КБ данных (в частности, файлы JPEG).
Что я могу добавить в свои скрипты для оптимизации размера файла?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Я использую imagick::FILTER_LANCZOS
фильтр с настройкой размытия в 0.9
при вызове resizeImage()
функция.Формат JPEG имеет настройку качества в 80
.
Решение
Я нашел этот вопрос SO, "Инструменты для оптимизации JPEG?", в котором содержится некоторая хорошая информация, но решения находятся за пределами PHP.Используя подсказки из решений этого вопроса, я обнаружил, что можно выполнить две оптимизации без потерь:
- Оптимизация таблиц кодирования Хаффмана
- Удаление метаданных (EXIF и т.д.)
И то, и другое может быть достигнуто с помощью ImageMagick
вот так:
- Согласно Документация ImageMagick, оптимальные таблицы кодирования Хаффмана вычисляются по умолчанию.Об этом шаге уже позаботились, ура!
- Удаление метаданные может быть достигнуто очень просто с помощью Полосатое изображение() способ.
Одно изображение, которое я тестировал, было уменьшено на 12 КБ.Размер файла 600x450 увеличился с 63,42 КБ до 51,42 КБ, а размер миниатюры 140x105 увеличился с 17,98 КБ до 5,98 КБ.
Другие советы
Запускайте свои изображения через сервис Yahoo SmushIt, где изображения преобразуются в формат PNG с точным количеством цветов.Потери в качестве нет, но есть потеря в весе :)