Массовое сжатие PNG- и JPEG-картинок на сервере без существенной потери качества

На VPS с SSD обычно дефицитом является дисковое пространство. Сайты разрастаются, в какой-то момент чистка логов уже не позволяет по-быстрому освободить ценное место на диске. Перенести часть сайтов на другой сервер — не всегда возможно. В общем, когда других решений нет, то можно пожать картинки. Изменять их разрешение массово, конечно, нельзя, потому что так можно испортить вёрстку или как-то ещё поломать сайт. А вот вычистить из картинок мета-данные (типа всяких XMP) и немного повысить степень компрессии — в крайнем случае можно.

Показываю на примере. Есть у нас довольно тяжёлый по диску сайт, а в нём известная директория с картинками и превьюшками:
du -sh /var/www/mysite/public/sites/default/files/
7.5G /var/www/mysite/public/sites/default/files/

Обработаем её с помощью утилиты jpegoptim:
find /var/www/mysite/public/sites/default/files/ \
-type f -iname '*.jpeg' -o -iname '*.jpg' \
-exec jpegoptim -p -m85 --all-progressive --strip-all {} \;

На VPS с одним ядром обработка заняла чуть более часа. Но результат очень порадовал:
du -sh /var/www/mysite/public/sites/default/files/
4.3G /var/www/mysite/public/sites/default/files/

Кстати, такая обработка даёт результат по качеству и весу итогового файла очень похожий (идентичный) на веб-сервис JPEGmini.

PNG-картинки можно оптимизировать с помощью другой утилиты — optipng. Массово она применяется примерно таким образом:
find /var/www/*/public/sites/default/files/ \
-iname *.png -print0 | xargs -0 optipng -o7



Прокомментируйте: