Способи оплати Abuse

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

16.06.2021, 19:33

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

У статті розглянемо як виконується оптимізація зображень Linux. Є різноманітність графічних інструментів для вирішення цього завдання, але на ділі все простіше. Далі розглянемо як стиснути зображення за допомогою двох простих, але дуже ефективних консольних утиліт командного рядка: jpegoptim - утиліта для оптимізації та стиснення зображень без втрати якості у форматі JPEG; optipng - це невелика програма, яка дає змогу зменшити розмір PNG зображень без втрати якості.

JPEG і PNG - це найпоширеніші формати зображень у мережі інтернет, тому ви зможете оптимізувати майже всі зображення.

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

Є така утиліта, jpegoptim - інструмент командного рядка, який можна використовувати для використовуватися для стиснення зображень у форматі JPEG, JPG і JFIF без втрати якості. Утиліта оптимізує зображення на основі таблиць Хаффмана. В алгоритмі JPEG і так використовується стиснення, але це стиснення досягається за допомогою втрати якості, а тут ми можемо оптимізувати розмір не змінюючи картинку.

ВСТАНОВЛЕННЯ JPEGOPTIM

Для встановлення утиліти в 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

Давайте розглянемо як користуватися jpegoptim. Використовувати утиліту для стиснення зображень linux дуже просто. Для цього достатньо виконати програму і передати їй ім'я файлу. Ось такий синтаксис:

$ jpegoptim optiona file_name.jpeg

Розглянемо опції утиліти:

  • -d - вказати папку, в яку потрібно зберігати готові зображення;
  • -f - примусова оптимізація;
  • -m - показник якості, скасовує стиснення без втрат і встановлює рівень якості від 0 до 100, чим більше, тим краще;
  • -n - не виконувати реальну оптимізацію, а тільки показати результат;
  • -S - задати розмір готового зображення, можна вказати у відсотках або кілобайтах;
  • -o - замінити вихідний файл;
  • -p - зберегти тимчасові мітки;
  • -P - зберегти права файлу.

Розглянемо як оптимізувати зображення в linux за допомогою jpegoptim. Спочатку подивимося вихідний розмір:

$ du image.jpg

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

Далі виконуємо найпростішу оптимізацію:

$ jpegoptim image.jpg

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

Потім знову дивимося розмір:

$ du image.jpg

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

Як можна побачити, стиснення jpg спрацювало, і, відкривши зображення в будь-якій графічній програмі, не буде відмінностей або погіршення якості, вихідний файл і готове зображення будуть ідентичні. Зліва оптимізоване, праворуч - оригінал:

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

Якщо хочете, ви можете стиснути зображення до певного розміру, але тоді без втрат не вийде:

$ jpegoptim --size=250k image.jpeg

Зображення буде стиснуто, але якість помітно погіршиться. Якщо зображень багато, то ви можете дуже просто використати пакетне стиснення, для цього просто перейдіть до папки із зображеннями, а потім виконайте команду стиснення вказавши замість файлу маску, наприклад:

$ cd images/

jpegoptim *.jpg

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

Також ви можете перерахувати кілька зображень за раз:

$ jpegoptim image1.jpg image2.jpg

Щоб оптимізувати всі зображення в певній папці можна використати команду xargs разом із find. Наприклад, стискаємо всі зображення в поточній папці з переміщенням у папку ~/compressed:

$ find . -name "*.jpg" | xargs jpegoptim -d ~/compressed -p

Ось і все, тепер ви знаєте як стиснути jpg зображення в Linux. Далі ми поговоримо про те, як стиснути png. Це теж дуже просто.

ОПТИМІЗАЦІЯ ЗОБРАЖЕНЬ PNG У LINUX

PNG або Portable Network Graphics - це растровий формат зображень, розроблений для заміни недосконалого в плані стиснення і передачі кольору формату GIF. Розмір PNG-зображень може сильно відрізнятися залежно від кількох чинників, як-от глибина кольору, переплетення, перед компресійний фільтр, алгоритм стиснення, що використовується, і т.д.

OptiPNG - це консольна утиліта, що дає змогу оптимізувати PNG зображення. А саме стискати розмір, відновлювати метадані, перевіряти цілісність і т д. За допомогою OptiPNG ви можете стискати файли без втрат якості, так само як ми це робили з форматом Jpeg.

ВСТАНОВЛЕННЯ OPTIPNG

Якщо ви використовуєте Ubuntu, то програма є в офіційних репозиторіях і ви можете її дуже просто встановити. Для встановлення optipng у Debian, Ubuntu і похідних наберіть:

$ sudo apt install optipng

У Red Hat, CentOS або Fedora все виконується точно так само, тільки інший менеджер пакетів:

$ sudo yum install optipng

Або:

$ sudo dnf install optipng

СТИСНЕННЯ ЗОБРАЖЕНЬ ЗА ДОПОМОГОЮ OPTIPNG

Синтаксис утиліти дуже простий. Ви можете використовувати її точно так само як і jpegoptim:

$ optipng ioptions file_name.png

Давайте розглянемо опції утиліти:

  • -backup - зберігати копії змінених файлів;
  • -dir - папка для запису файлів;
  • -force - примусовий запис вихідного файлу;
  • -out - записати вихідний файл у вказаний;
  • -simulate - не виконувати жодних дій, а тільки показати результат;
  • -o - встановити рівень стиснення від 0 до 7.

Тепер спробуємо оптимізувати png у linux. Спочатку подивимося розмір файлу:

$ df -h image.png

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

Щоб виконати стиснення зображень використовуйте таку команду:

$ optipng image.png

Потім знову дивимося розмір, у цьому прикладі відмінностей не видно, бо зображення дуже маленьке, але за більшого розміру вони будуть значними:

Тут теж стиснення png linux зображень без втрат, а це значить, що ви отримаєте точно таке саме зображення тільки меншого розміру. Також можна вказати рівень стиснення, він не впливає на якість картинки, але від нього безпосередньо залежить час роботи програми. Значення може бути від 0 до 7, і що більше, то сильніше стиснення і то довше триватиме обробка:

$ optipng -o 7 impge.png

Для пакетного оброблення зображень можна використовувати той самий принцип, що і в роботі з jpeg:

$ cd images/

$ optipng *.png

Тепер ви знаєте як виконується оптимізація зображень linux.