668 145 480 info@jacekjagusiak.pl

Posiadam kilka stron, na których aż roi się od różnego rodzaju zdjęć, screenów itp. Odkąd prowadzę jedną z nich, gdzieś od 2010 roku zebrało się na niej ponad 10 000 zdjęć. Zdjęć które nie tak łatwo pobrać na lokalny komputer, gdyż w sumie zajmują ponad 4GB, więc kopiowanie ich przez FTP byłoby dość czasochłonne. Oczywiście można je spakować i pobrać paczkę, ale później i tak trzeba je wrzucić z powrotem na serwer i nadpisać nimi stare pliki.

Tu może zdarzyć się wszystko, a najczęściej spotyka mnie niespodzianka w postaci nieoczekiwanych zmian w uprawnieniach, a i sam WordPress nie ułatwia mi tego zadania. Ktoś może powiedzieć „Użyj wtyczki skoro masz WordPressa”, ale jakoś nie przekonuje mnie to rozwiązanie, gdyż większość z nich nie pozwala mi kontrolować wszystkiego czego bym chciał. Najgorsze jest to, że wśród tych 10 000 zdjęć znajdą się i takie, które zajmują po 8MB – tylko po co mi takie, to nie serwis z tapetami, a strona o grach internetowych.

Plus jest taki, że posiadam dostęp przez SSH do swojego VPS’a i tutaj wszyscy, którzy nie mają takich dostępów proszeni są o odstąpienie od czytania dalszej części artykułu, gdyż prezentowana przeze mnie metoda głównie opiera się na komendach, które należy wpisywać w konsoli.

Dodatkowo przy tej metodzie kompresja zdjęć w formacie JPEG będzie całkowicie bezstratna, nie stracimy na jakości, ale zyskamy miejsce na dysku plus strona zawierająca wszystkie zoptymalizowane zdjęcia będzie z pewnością ładowała się znacznie szybciej niż przed zmianą.

Oczywiście korzystając z jpegoptim, bo tym się dziś zajmiemy, możemy wykonać stratną kompresję, którą polecam użytkownikom mającym ograniczony budżet na utrzymanie serwera albo ograniczony na nim transfer.

Sprawdź także:  Spamowe agregatory treści mogą być sporym problemem!

To co, macie dostęp do swoich serwerów przez SSH? Korzystacie z linuxa? Jeśli nie to polecam program Putty, który pozwoli Wam się połączyć z serwerem poprzez SSH.

Na samym początku zainstalujmy u siebie jpegoptim, dla serwerów z Ubuntu bądź Debianem użyjemy komendy:

sudo apt-get install jpegoptim

A teraz przechodzimy do folderu, w którym mamy zdjęcia jakie chcemy zoptymalizować. Gdy już tam się znajdziemy to wybieramy zdjęcie, ja tutaj nazwę je foto.jpg i wpisujemy komendę:

jpegoptim foto.jpg

W wyniku otrzymuje:

foto.jpg 24bit JFIF [OK] 7306 --> 6759 bytes (7.49%), optimized

Pamiętajcie jednak, że wynikowy obrazek nadpisze wcześniejszy. Co więcej, jeśli jpegoptim nie będzie w stanie zoptymalizować obrazka bezstratnie to pominie jego nadpisywanie.

jpegoptim -v foto.jpg
foto.jpg 24bit JFIF [OK] 6759 --> 6759 bytes (0.00%), skipped

Jeśli chcemy, aby program nie nadpisywał starego zdjęcia to musimy podać mu lokalizacje, w której chcemy zapisać zmodyfikowany obraz dopisując do opcji -d:

jpegoptim -d ./skompresowane foto.jpg

Zoptymalizowane obrazy trafią do folderu skompresowane.

Możemy także uniknąć modyfikacji czasu (daty) utworzenia (edycji) pliku korzystając z opcji -p, dzięki czemu skompresowany pliczek będzie miał taką samą datę jak oryginał.

jpegoptim -d ./ skompresowane -p foto.jpg

Ale po co bawić się tak z pojedynczymi obrazami? Wybieramy folder, gdzie znajduje się ponad 400 plików z rozszerzeniem jpg i trzeba je zoptymalizować za jedym zamachem. Nic prostszego, będąc właśnie w takim folderze wpisujemy:

jpegoptim -d ./ skompresowane -p *.jpg

* sprawi, że wszystkie pliki w danym folderze z rozszerzeniem jpg zostaną skompresowane i zoptymalizowane, a następnie pojawią się w folderze skompresowane.

Sprawdź także:  Rel=canonical i noindex jednocześnie?

Stratna kompresja JPEG

Tak jak wspomniałem wcześniej, niekiedy aby zyskać jeszcze więcej miejsca na dysku jak i zaoszczędzić na transferze danych, potrzebna będzie nam kompresja stratna, gdzie tracimy nieco na jakości, ale niekoniecznie na tyle dużo, aby zmiany były widoczne dla przeciętnego zjadacza chleba, choć graficy z pewnością zauważą spadek jakości na takich zdjęciach, ale nie tworzymy ich przecież dla nich.

W tym przypadku używamy w komendzie opcji -m<maksymalna-jakość>, gdzie parametr w <> oznacza stopień od 0 do 100, gdzie zero to najwyższa jakość a 100 najniższa – wiem, wydawałoby się, że powinno być na odwrót, ale nie jest.

jpegoptim -m50 foto.jpg
foto.jpg 24bit JFIF [OK] 7306 --> 2654 bytes (63.67%), optimized

Widzicie, zaoszczędziliśmy ponad 60% miejsca kosztem jakości obrazu. W efekcie nie stracił on tak naprawdę wizualnie niczego, albo ja jestem ślepy – mój wzrok nie odczuł zbyt wielkich zmian na optymalizowanym zdjęciu.

W tym przypadku możemy również masowo optymalizować tak obrazy w danej lokalizacji, wystarczy nazwę pliku zamienić na *:

jpegoptim -m50 *.jpg

I czekamy, przy większej ilości plików zajmuje to znacznie więcej czasu, ale wszystko dzieje się bez dalszej, naszej ingerencji.

Na koniec dodam jedynie, że mając na serwerze obrazy zajmujące 4 589 MB w wyniku bezstratenej optymalizacji tą metodą zaoszczędziłem 297MB, może to i mało, ale jakbym chociaż zmniejszył ich jakość o załóżmy 20% to już różnica byłaby zapewne dwukrotna jak nie większa.

Teraz wyobraźcie sobie jak bardzo odciążacie swoją stronę zoptymalizowanymi zdjęciami, jak dużo oszczędzacie miejsca na dysku i o ile mniej transferu witryna pożera mniej każdego miesiąca.