Якщо на комп'ютері є достатня кількість зображень, вони займають занадто багато місця, то їхній розмір однозначно можна зменшити навіть без втрати якості. Також це може бути дуже корисним під час завантаження зображень у хмарне сховище.
JPEG і PNG - це найпоширеніші формати зображень у мережі інтернет, тому ви зможете оптимізувати майже всі зображення.
Є така утиліта, jpegoptim - інструмент командного рядка, який можна використовувати для використовуватися для стиснення зображень у форматі JPEG, JPG і JFIF без втрати якості. Утиліта оптимізує зображення на основі таблиць Хаффмана. В алгоритмі JPEG і так використовується стиснення, але це стиснення досягається за допомогою втрати якості, а тут ми можемо оптимізувати розмір не змінюючи картинку.
Для встановлення утиліти в Ubuntu, Debian і заснованих на ньому дистрибутивах виконайте:
$ sudo apt install jpegoptim
У Fedora, Red Hat, CentOS та інших, заснованих на них дистрибутивах справи йдуть трохи складніше, вам доведеться спочатку додати репозиторій epel-release. Ви можете зробити це за допомогою такої команди:
$ sudo yum install epel-release
Або:
$ sudo dnf install epel-release
Потім ви можете встановити jpegoptim зі щойно підключеного сховища:
$ sudo yum install jpegoptim
Або:
$ sudo dnf install jpegoptim
Давайте розглянемо як користуватися jpegoptim. Використовувати утиліту для стиснення зображень linux дуже просто. Для цього достатньо виконати програму і передати їй ім'я файлу. Ось такий синтаксис:
$ jpegoptim optiona file_name.jpeg
Розглянемо опції утиліти:
-d
- вказати папку, в яку потрібно зберігати готові зображення;-f
- примусова оптимізація;-m
- показник якості, скасовує стиснення без втрат і встановлює рівень якості від 0 до 100, чим більше, тим краще;-n
- не виконувати реальну оптимізацію, а тільки показати результат;-S
- задати розмір готового зображення, можна вказати у відсотках або кілобайтах;-o
- замінити вихідний файл;-p
- зберегти тимчасові мітки;-P
- зберегти права файлу.Розглянемо як оптимізувати зображення в linux за допомогою jpegoptim. Спочатку подивимося вихідний розмір:
$ du image.jpg
Далі виконуємо найпростішу оптимізацію:
$ jpegoptim image.jpg
Потім знову дивимося розмір:
$ du image.jpg
Як можна побачити, стиснення jpg спрацювало, і, відкривши зображення в будь-якій графічній програмі, не буде відмінностей або погіршення якості, вихідний файл і готове зображення будуть ідентичні. Зліва оптимізоване, праворуч - оригінал:
Якщо хочете, ви можете стиснути зображення до певного розміру, але тоді без втрат не вийде:
$ jpegoptim --size=250k image.jpeg
Зображення буде стиснуто, але якість помітно погіршиться. Якщо зображень багато, то ви можете дуже просто використати пакетне стиснення, для цього просто перейдіть до папки із зображеннями, а потім виконайте команду стиснення вказавши замість файлу маску, наприклад:
$ cd images/
jpegoptim *.jpg
Також ви можете перерахувати кілька зображень за раз:
$ jpegoptim image1.jpg image2.jpg
Щоб оптимізувати всі зображення в певній папці можна використати команду xargs разом із find. Наприклад, стискаємо всі зображення в поточній папці з переміщенням у папку ~/compressed:
$ find . -name "*.jpg" | xargs jpegoptim -d ~/compressed -p
Ось і все, тепер ви знаєте як стиснути jpg зображення в Linux. Далі ми поговоримо про те, як стиснути png. Це теж дуже просто.
PNG або Portable Network Graphics - це растровий формат зображень, розроблений для заміни недосконалого в плані стиснення і передачі кольору формату GIF. Розмір PNG-зображень може сильно відрізнятися залежно від кількох чинників, як-от глибина кольору, переплетення, перед компресійний фільтр, алгоритм стиснення, що використовується, і т.д.
OptiPNG - це консольна утиліта, що дає змогу оптимізувати PNG зображення. А саме стискати розмір, відновлювати метадані, перевіряти цілісність і т д. За допомогою OptiPNG ви можете стискати файли без втрат якості, так само як ми це робили з форматом Jpeg.
Якщо ви використовуєте Ubuntu, то програма є в офіційних репозиторіях і ви можете її дуже просто встановити. Для встановлення optipng у Debian, Ubuntu і похідних наберіть:
$ sudo apt install optipng
У Red Hat, CentOS або Fedora все виконується точно так само, тільки інший менеджер пакетів:
$ sudo yum install optipng
Або:
$ sudo dnf install optipng
Синтаксис утиліти дуже простий. Ви можете використовувати її точно так само як і jpegoptim:
$ optipng ioptions file_name.png
Давайте розглянемо опції утиліти:
-backup
- зберігати копії змінених файлів;-dir
- папка для запису файлів;-force
- примусовий запис вихідного файлу;-out
- записати вихідний файл у вказаний;-simulate
- не виконувати жодних дій, а тільки показати результат;-o
- встановити рівень стиснення від 0 до 7.Тепер спробуємо оптимізувати png у linux. Спочатку подивимося розмір файлу:
$ df -h image.png
Щоб виконати стиснення зображень використовуйте таку команду:
$ optipng image.png
Потім знову дивимося розмір, у цьому прикладі відмінностей не видно, бо зображення дуже маленьке, але за більшого розміру вони будуть значними:
Тут теж стиснення png linux зображень без втрат, а це значить, що ви отримаєте точно таке саме зображення тільки меншого розміру. Також можна вказати рівень стиснення, він не впливає на якість картинки, але від нього безпосередньо залежить час роботи програми. Значення може бути від 0 до 7, і що більше, то сильніше стиснення і то довше триватиме обробка:
$ optipng -o 7 impge.png
Для пакетного оброблення зображень можна використовувати той самий принцип, що і в роботі з jpeg:
$ cd images/
$ optipng *.png
Тепер ви знаєте як виконується оптимізація зображень linux.