Jak zoptymalizować zdjęcia na stronie mając w swych łapach dostęp SSH do serwera?

2 Comments

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.

[adsense2]

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.

[adsense]

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:

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ę:

W wyniku otrzymuje:

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.

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:

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ł.

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:

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

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.

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 *:

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

[adsense]

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.

ZNAJDZIESZ NAS NA FACEBOOKU

Polecamy także inne artykuły

Zobacz wszystkie artykuły
2 Comments
    • ;)
    • 23 czerwca 2015
    Odpowiedz

    Bezstratnie, i tak nic nie zastąpi ręcznej optymalizacji najbardziej obciążonych miejsc.

    Zgadza nie zawsze łatwo dostrzec różnice, tutaj jest przedstawiony rozkład kompresji i wpływ na zdjęcie.
    http://regex.info/blog/lightroom-goodies/jpeg-quality

    Jeszcze więcej byś zyskał optymalizując schematy do png

    Dla użytku komercyjnego wystarczy Xnview/kreator eksportu.

 

Leave a Comment