Начини на плащане 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.