Стиснення зображень в консолі Linux

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

оптимізація jpeg зображень

Насправді, стиснення фото 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
оптимізація jpeg зображень

Будьте уважними, при цьому вихідне зображення буде перезаписано стиснутим.

Якщо стиснути зображення без втрат вже неможливо то jpegoptim не буде перезаписувати файл.

$ jpegoptim -v photo.jpg
оптимізація jpeg в консолі

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

$ jpegoptim -d ./compressed photo.jpg
оптимізація jpeg в консолі

Якщо ви хочете зберегти час створення(зміни) вихідного зображення використовуйте опцію “-p”. При цьому стиснуте зображення буде записано з тим же часом і датою, що й оригінальний файл.

$ jpegoptim -d ./compressed -p photo.jpg

За бажанням можна просто перевірити можливість і ступінь стиснення, але без його виконання. Для цього використовуйте опцію “-n”. При цьому стиснення буде змодельовано та виведеного його результат.

$ jpegoptim -n photo.jpg
оптимізація jpeg в консолі

Стиснення jpeg зображень з втратами якості

У випадку коли вам дійсно дуже потрібно звільнити простір на диску ви можете спробувати стиснення з втратами.

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

$ jpegoptim -m50 photo.jpg
оптимізація jpeg в консолі


Внаслідок зниження якості ви отримаєте файл меншого розміру.

Пакетне стискання зображень

Часто необхідно стиснути велику кількість зображень, що знаходяться в одній теці. В цьому випадку можна використати такий скрипт:

#!/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