Наши партнеры

UnixForum





Библиотека сайта 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


Средняя оценка 5 при 1 голосовавших

Комментарии