Ако имате достатъчно изображения в компютъра си и те заемат твърде много място, определено е възможно да намалите размера им, дори без да губите качество. Това може да бъде много полезно и при качване на изображения в облачно хранилище.
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.