Данный материал будет интересен в первую очередь владельцам сайтов желающих уменьшить размер изображений на своем сервере, тем самым повысив скорость загрузки страниц.
Если вы собираетесь применить данный способ на Ваших личных фотографиях, то знайте что будет удалена информация о дате, месте съемки.
Каким образом достигается уменьшение размера? Как я уже выше сказал это будет достигаться путем удаления комментариев и всевозможной дополнительной информации (Exif, IPTC, ICC, XMP).
sudo apt-get install jpegoptim
JPEGoptim будем использовать со следующими ключами:
- —strip-all удаляет комментарии, Exif, IPTC, ICC, XMP
- —all-progressive преобразует в прогрессивный jpeg
- -p сохранит время создания такими же как у исходного файла
- -t покажет итоговый результат оптимизации для нескольких изображений
- -m90 устанавливает максимальное сжатие jpeg в 90. Этот параметр влияет на качество изображения!
JPG файлы будем оптимизировать и преобразовывать в прогрессивный вид при помощи JPEGoptim. Прогрессивный jpeg, это когда при загрузке сначала появляется размытый контур изображения и по мере загрузки обретается четкость. Jpg в прогрессивном режиме позволяет получить представление обо всём изображении уже после передачи незначительной части JPEG-файла. В обычном режиме jpeg загружается последовательно, с верху в низ.
В итоге для оптимизации jpeg файлов в текущей папке надо запустить
jpegoptim --strip-all --all-progressive -Pptm90 *.jpg
Для рекурсивного (во всех вложенных подкаталогах) преобразования запускаем
find -type f -iname "*.jpg" -exec jpegoptim --strip-all --all-progressive -Ppm90 {} \;
Для запуска на сервере от имени www-data и c сохранением прав доступа наберем команду:
sudo -u www-data find -type f -iname "*.jpg" -exec jpegoptim --strip-all --all-progressive -Ppm90 {} \; -exec chmod 644 {} \;
OptiPNG уменьшает размер файла путем удаления ненужных для изображения функций таких как на примем полноцветность для черно-белых изображений.
sudo apt install optipng
PPA с последней версией OptiPNG
sudo apt-add-repository ppa:optipng/stable
sudo apt-get update
sudo apt-get upgrade
OptiPNG будем использовать с ключами:
- -strip all удалит всю «лишнюю» информацию из файла
- -o4 указывает степень сжатия, от 1 до 7. По умолчанию 2.
Так же, по умолчанию OptiPNG преобразует входные файлы с чередованием строк (interlaced). Это похоже на прогрессивный jpg, когда изначально загружаются контуры изображения и по мере загрузки появляется четкость. Это позволяет на начальном этапе загрузки получить представление о загружаемом изображении. В обычном режиме изображения загружается сверху в низ. Эту опцию можно отключить, используя ключ -i0. -i1 включает преобразование в interlaced (по умолчанию).
За подробностями man optipng
Для рекурсивной оптимизации запускаем
find -type f -iname "*.png" -exec optipng -strip all -o4 {} \;
Итоговые команды для рекурсивной оптимизации изображений на сервере от имени пользователя www-data
Для JPG
sudo -u www-data find -type f -iname "*.jpg" -exec jpegoptim --strip-all --all-progressive -Ppm90 {} \; -exec chmod 644 {} \;
Для PNG
sudo -u www-data find -type f -iname "*.png" -exec optipng -strip all -o4 {} \;
[endtxt]