Jeśli masz wystarczająco dużo obrazów na komputerze i zajmują one zbyt dużo miejsca, zdecydowanie możliwe jest zmniejszenie ich rozmiaru nawet bez utraty jakości. Może to być również bardzo przydatne podczas przesyłania obrazów do pamięci masowej w chmurze.
JPEG i PNG to najpopularniejsze formaty obrazów w Internecie, więc będziesz w stanie zoptymalizować prawie wszystkie obrazy
Istnieje narzędzie o nazwie jpegoptim, narzędzie wiersza poleceń, które może być używane do kompresji obrazów JPEG, JPG i JFIF bez utraty jakości. Narzędzie optymalizuje obrazy w oparciu o tablice Huffmana. Algorytm JPEG wykorzystuje kompresję taką, jaka jest, ale kompresja ta jest osiągana przy utracie jakości, a tutaj możemy zoptymalizować rozmiar bez zmiany obrazu.
Aby zainstalować narzędzie w Ubuntu, Debianie i innych dystrybucjach, uruchom:
$ sudo apt install jpegoptim
W Fedorze, Red Hat, CentOS i innych dystrybucjach na nich opartych sprawy są nieco bardziej skomplikowane, będziesz musiał najpierw dodać repozytorium epel-release. Można to zrobić za pomocą polecenia takiego jak to:
$ sudo yum install epel-release
Lub:
$ sudo dnf install epel-release
Następnie możesz zainstalować jpegoptim z repozytorium, które właśnie dodałeś:
$ sudo yum install jpegoptim
Lub:
$ sudo dnf install jpegoptim
Przyjrzyjmy się, jak używać jpegoptim. Korzystanie z linuksowego narzędzia do kompresji obrazu jest bardzo proste. Wszystko, co musisz zrobić, to uruchomić program i przekazać mu nazwę pliku. Tak wygląda składnia:
$ jpegoptim optiona file_name.jpeg
Przyjrzyjmy się opcjom narzędzia:
-d
- określenie folderu, w którym mają być zapisywane gotowe obrazy;-f
- wymuszona optymalizacja;-m
- wskaźnik jakości, anuluje bezstratną kompresję i ustawia poziom jakości od 0 do 100, im więcej tym lepiej;-n
- nie wykonuje rzeczywistej optymalizacji, tylko pokazuje wynik;-S
- ustawia rozmiar gotowego obrazu, może być określony w procentach lub kilobajtach;-o
- zastępuje plik źródłowy;-p
- zapisuje znaczniki czasu;-P
- zapisywanie praw do pliku.Zobaczmy, jak zoptymalizować obrazy w systemie Linux za pomocą jpegoptim. Najpierw przyjrzyjmy się oryginalnemu rozmiarowi:
$ du image.jpg
Następnie wykonujemy najprostszą optymalizację:
$ jpegoptim image.jpg
Następnie ponownie sprawdzamy rozmiar:
$ du image.jpg
Jak widać, kompresja jpg zadziałała, a otwierając obraz w dowolnym programie graficznym nie będzie różnicy ani pogorszenia jakości, oryginał i gotowy obraz będą identyczne. Po lewej stronie znajduje się zoptymalizowany obraz, po prawej oryginał:
Jeśli chcesz, możesz skompresować obraz do określonego rozmiaru, ale wtedy nie będzie on bezstratny:
$ jpegoptim --size=250k image.jpeg
Obraz zostanie skompresowany, ale jego jakość wyraźnie się pogorszy. Jeśli istnieje wiele obrazów, można bardzo łatwo użyć kompresji wsadowej, wystarczy przejść do folderu z obrazami, a następnie uruchomić polecenie kompresji, określając na przykład maskę zamiast pliku:
$ cd images/
jpegoptim *.jpg
Można także wylistować więcej niż jeden obraz naraz:
$ jpegoptim image1.jpg image2.jpg
Aby zoptymalizować wszystkie obrazy w określonym folderze, można użyć polecenia xargs wraz z poleceniem find. Na przykład skompresuj wszystkie obrazy w bieżącym folderze za pomocą polecenia move do folderu ~/compressed:
$ find . -name "*.jpg" | xargs jpegoptim -d ~/compressed -p
To wszystko, teraz wiesz jak skompresować obrazy jpg w Linuksie. Następnie porozmawiamy o tym, jak skompresować png. To również jest bardzo proste.
PNG lub Portable Network Graphics to format obrazu bitmapowego zaprojektowany w celu zastąpienia niedoskonałego formatu GIF pod względem kompresji i odwzorowania kolorów. Rozmiar obrazów PNG może się znacznie różnić w zależności od kilku czynników, takich jak głębia kolorów, przeplot, filtr przed kompresją, zastosowany algorytm kompresji itp.
OptiPNG to narzędzie konsolowe, które umożliwia optymalizację obrazów PNG. Mianowicie kompresuje rozmiar, odzyskuje metadane, sprawdza integralność itp. Dzięki OptiPNG można kompresować pliki bez utraty jakości, podobnie jak w przypadku formatu Jpeg.
Jeśli korzystasz z Ubuntu, program znajduje się w oficjalnych repozytoriach i możesz go bardzo łatwo zainstalować. Aby zainstalować optipng w Debianie, Ubuntu i pochodnych wpisz:
$ sudo apt install optipng
W Red Hat, CentOS lub Fedora robi się to dokładnie tak samo, tylko używa się innego menedżera pakietów:
$ sudo yum install optipng
Lub:
$ sudo dnf install optipng
Składnia narzędzia jest bardzo prosta. Można go używać w dokładnie taki sam sposób jak jpegoptim:
$ optipng ioptions file_name.png
Przyjrzyjmy się opcjom narzędzia:
-backup
- zapisywanie kopii zmodyfikowanych plików;-dir
- folder do zapisu plików;-force
- wymuś zapis pliku wychodzącego;-out
- zapisz plik wychodzący
do określonego pliku;-simulate
- nie wykonuje żadnych działań, a jedynie pokazuje wynik;-o
- ustawia poziom kompresji od 0 do 7.Spróbujmy teraz zoptymalizować png w linuxie. Najpierw sprawdźmy rozmiar pliku:
$ df -h image.png
Aby wykonać kompresję obrazu, użyj następującego polecenia:
$ optipng image.png
Następnie ponownie spójrzmy na rozmiar, w tym przykładzie różnice nie są widoczne, ponieważ obraz jest bardzo mały, ale przy większym rozmiarze będą one znaczące:
Tutaj również kompresja obrazów png linux jest bezstratna, co oznacza, że otrzymasz dokładnie ten sam obraz, tylko mniejszy. Można również określić poziom kompresji, nie ma on wpływu na jakość obrazu, ale bezpośrednio wpływa na czas działania programu. Wartość może wynosić od 0 do 7, a im więcej, tym silniejsza kompresja i dłuższe przetwarzanie:
$ optipng -o 7 impge.png
Do wsadowego przetwarzania obrazów można wykorzystać tę samą zasadę, co przy pracy z jpeg:
$ cd images/
$ optipng *.png
Teraz już wiesz jak przebiega optymalizacja obrazu w systemie linux.