Утилита 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) позволяет добиться результата без каких-либо потерь.
Читайте также о том, как выбрать формат для изображений на сайте.