jpegtran для оптимизации JPEG

Утилита jpegtran предназначена для оптимизации изображений в формате JPEG — главным образом это означает сжатие их без потери качества. Для больших ресурсов со значительным количеством изображений такая оптимизация может увеличить скорость загрузки сайта и снизить нагрузку на сервер.

Кроме сжатия (оно фактически производится за счет изменения способа кодирования м удаления служебной информации)  jpegtran позволяет проводить реорганизацию данных (например, изменение представления с landscape на portrait и наоборот).

Для Debian подобных системах jpegtran устанавливается из репозитория как часть пакета libjpeg-progs

apt-get install libjpeg-progs

В CentOS устанавливается так:

yum install libjpeg*

jpegtran требует указания имя файла на входе и имя файла на выходе. Способ кодировки изображения jpegtran позволяет изменять без потерь, изменение качества происходит с потерями.

Утилита запускается из консоли с необходимыми флагами, в общем случае так:

jpegtran -copy none -perfect -optimize -outfile new-picture.jpg picture.jpg

copy none — удаляет служебную информацию

optimize — оптимизирует энтропию закодированных параметров, за счет этого ключа JPEG изображение  уменьшается в размере

perfect  — произведет преобразование только если не произошло никаких ошибок

Другие опции jpegtran, которые часто применяются:

rotate 180 — поворачивает изображение относительно оригинала (в примере — на 180 градусов)

flip vertical — переворачивает вертикально (ключ horizontal также применим)

quality 60 — обеспечивает изменение уровня сглаживания JPEG. уменьшение (значения менее 100) будут снижать качество, но дадут плюс в производительности при больших нагрузках

progressive — создает прогрессивный JPEG файл, изображение, приведенное к progressive виду будет загружаться быстрее.

Это аналог асинхронной загрузки javascript — при рендеринге HTML страницы прогрузится сначала общий вид изображения, затем мелкие детали.

Чаще всего jpegtran пользуются как раз для получения progressive JPEG

jpegtran  -progressive -outfile progressive-picture.jpg picture.jpg

jpegtran позволяет выполнить многие операции из тех, для которых используется convert. У последнего jpegtran выигрывает в том, что для двух базовых операций  (optimize и progressive) позволяет добиться результата без каких-либо потерь.

Читайте также о том, как выбрать формат для изображений на сайте.