Роздільна здатність цифрових фотографій постійно розширюється. І у зв’язку зі збільшенням кількості знімків з високою роздільною здатністю зазвичай їм необхідно з метою зменшення розміру файлу для подальшого завантаження до хмарних сховищ, оскільки розмір цих сервісів обмежений.

Насправді, стиснення фото jpeg формату в Лінукс не є чимось складним, оскільки існує програма командного рядка jpegoptim, яка дозволяє оптимізувати зображення без втрати якості. Якщо ваш дисковий простір або інтернет-трафік дуже обмежені утиліта також може здійснювати стиснення з втратами для отримання файлу з потрібним розміром.
Встановлення jpegoptim в Лінукс
Інсталяція програми в Лінукс відбувається звичайними для більшості дистрибутивів способами. Або через графічні менеджери пакетів або через консоль. В більшості дистрибутивів ця програма є в репозитаріях.
Найшвидший спосіб – консольний. Скористаємося ним.
Встановлення 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

Будьте уважними, при цьому вихідне зображення буде перезаписано стиснутим.
Якщо стиснути зображення без втрат вже неможливо то jpegoptim не буде перезаписувати файл.
$ jpegoptim -v photo.jpg

Якщо ви хочете зберегти початкове зображення то за допомогою опції “-d” вкажіть теку для збереження стиснутого файлу.
$ jpegoptim -d ./compressed photo.jpg

Якщо ви хочете зберегти час створення(зміни) вихідного зображення використовуйте опцію “-p”. При цьому стиснуте зображення буде записано з тим же часом і датою, що й оригінальний файл.
$ jpegoptim -d ./compressed -p photo.jpg
За бажанням можна просто перевірити можливість і ступінь стиснення, але без його виконання. Для цього використовуйте опцію “-n”. При цьому стиснення буде змодельовано та виведеного його результат.
$ jpegoptim -n photo.jpg

Стиснення jpeg зображень з втратами якості
У випадку коли вам дійсно дуже потрібно звільнити простір на диску ви можете спробувати стиснення з втратами.
В такому варіанті використовуйте опцію “-m”, де якість задається в діапазоні від 0 до 100 (0 – найгірша якість, а 100 – найкраща).
Наприклад, для стиснення зображення з якістю 50% від оригінала необхідно набрати таку команду:
$ jpegoptim -m50 photo.jpg

Внаслідок зниження якості ви отримаєте файл меншого розміру.
Пакетне стискання зображень
Часто необхідно стиснути велику кількість зображень, що знаходяться в одній теці. В цьому випадку можна використати такий скрипт:
#!/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
Після виконання скрипту всі файли в поточній теці з розширенням jpg будуть стиснені без втрати якості і їх буде скопійовано до теки compressed зі збереженням часових міток оригінальних файлів.
Ми розглянули лише основні опції утиліти jpegoptim. Перелік усіх можливостей можна почитати на man-сторінці програми. Або в короткому описі
додавши опцію “-h” або “–help” :
jpegoptim --help
jpegoptim v1.4.6 Copyright (C) 1996-2018, Timo Kokkonen
Usage: jpegoptim [options] <filenames>
-d<path>, --dest=<path>
specify alternative destination directory for
optimized files (default is to overwrite originals)
-f, --force force optimization
-h, --help display this help and exit
-m<quality>, --max=<quality>
set maximum image quality factor (disables lossless
optimization mode, which is by default on)
Valid quality values: 0 - 100
-n, --noaction don't really optimize files, just print results
-S<size>, --size=<size>
Try to optimize file to given size (disables lossless
optimization mode). Target size is specified either in
kilo bytes (1 - n) or as percentage (1% - 99%)
-T<threshold>, --threshold=<threshold>
keep old file if the gain is below a threshold (%)
-b, --csv print progress info in CSV format
-o, --overwrite overwrite target file even if it exists (meaningful
only when used with -d, --dest option)
-p, --preserve preserve file timestamps
-P, --preserve-perms
preserve original file permissions by overwriting it
-q, --quiet quiet mode
-t, --totals print totals after processing all files
-v, --verbose enable verbose mode (positively chatty)
-V, --version print program version
-s, --strip-all strip all markers from output file
--strip-none do not strip any markers
--strip-com strip Comment markers from output file
--strip-exif strip Exif markers from output file
--strip-iptc strip IPTC/Photoshop (APP13) markers from output file
--strip-icc strip ICC profile markers from output file
--strip-xmp strip XMP markers markers from output file
--all-normal force all output files to be non-progressive
--all-progressive force all output files to be progressive
--stdout send output to standard output (instead of a file)
--stdin read input from standard input (instead of a file)
Перекладено зі статті http://ask.xmodulo.com/compress-jpeg-images-command-line-linux.html