Библиотека сайта rus-linux.net
Ошибка базы данных: Table 'a111530_forumnew.rlf1_users' doesn't exist
Сжатие изображений формата JPEG в командной строке Linux
Оригинал: How to compress JPEG images from the command line on LinuxАвтор: Dan Nanni
Дата публикации: 21 марта 2015 года
Перевод: А. Кривошей
Дата перевода: май 2015 г.
Разрешение фотографий, которые делают с помощью цифровых камер и смартфонов, постоянно увеличивается. Появившийся недавно в продаже Nikon D800 с разрешением 36,3 мегапиксел - это уже далеко не предел. В связи с ростом количества снимков в высоком разрешении часто требуется их постобработка с целью уменьшения размера для последущей их загрузки в онлайн-хранилища и облачные сервисы, так как размер предоставляемого там дискового пространства как правило ограничен.
На самом деле сжатие изображений формата JPEG в Linux не представляет сложности, так как есть утилита командной строки "jpegoptim", которая позволяет оптимизировать jpeg-изображения без потери качества. Если ваше дисковое пространство или трафик действительно сильно ограничены, jpegoptim позволяет также производить сжатие с потерями, чтобы получить файл требуемого размера.
Установка Jpegoptim в Linux
Установка jpegoptim в Ubuntu, Debian или Linux Mint:
$ sudo apt-get install jpegoptim
Установка jpegoptim в Fedora:
$ sudo yum install jpegoptim
Для установки jpegoptim в CentOS/RHEL, сначала активируйте репозиторий EPEL, затем введите:
$ sudo yum install jpegoptim
Сжатие изображений JPEG без потерь
Для сжатия изображения без потерь используется команда:
$ jpegoptim photo.jpg photo.jpg 2048x1536 24bit N ICC JFIF [OK] 882178 --> 821064 bytes (6.93%), optimized.
Обратите внимание, что при этом исходное изображение перезаписывается сжатым.
Если сжатие изображения без потерь уже невозможно, jpegoptim не будет перезаписывать файл.
$ jpegoptim -v photo.jpg photo.jpg 2048x1536 24bit N ICC JFIF [OK] 821064 --> 821064 bytes (0.00%), skipped.
Если вы хотите сохранить исходное изображение, с помощью опции "-d" укажите директорию для сохранения сжатого изображения.
$ jpegoptim -d ./compressed photo.jpg
Если вы хотите сохранить время создания/модификации исходного изображения, используйте опцию "-p". При этом сжатое изображение будет записано с той же датой и временем, что и оригинальный файл.
$ jpegoptim -d ./compressed -p photo.jpg
Если вы хотите просто проверить возможность и степень сжатия, без его выполнения, используйте опцию "-n". При этом сжатие будет смоделировано, и выведен его без результат.
$ jpegoptim -n photo.jpg
Сжатие изображений JPEG с потерями
В случае, если вам действительно очень нужно освободить дисковое пространство, вы можете попробовать сжатие с потерями.
В этом случае используйте опцию "-m<maximum-quality>", где качество задается в диапазоне от 0 до 100 (0 - наихудшее качество, 100 - наилучшее качество).
Например, для сжатия изображения с 50% качеством:
$ jpegoptim -m50 photo.jpg photo.jpg 2048x1536 24bit N ICC JFIF [OK] 882178 --> 301780 bytes (65.79%), optimized.
Ценой снижения качества вы получите файл меньшего размера.
Пакетное сжатие изображений
Часто требуется сжать большое количество изображений, находящихся в одной директории. В этом случае вы можете использовать следующий скрипт:
#!/bin/sh # compress all *.jpg files in the current directory # and place them in ./compressed directory # with the same modification date as original files. for i in *.jpg; do jpegoptim -d . /compressed -p "$i" ; done