scriptpng

ScriptPNG, błyskawiczna optymalizacja plików PNG

Maksymalne zmniejszenie rozmiaru plików graficznych to jeden z kluczowych elementów w tworzeniu i optymalizacji stron internetowych. Istnieje cała gama narzędzi optymalizujących, stąd dobór odpowiedniego programu nie jest łatwym zadaniem. Niniejszy poradnik otwiera serię artykułów dotyczących optymalizacji grafiki. W tym poradniku dowiesz się, w jaki sposób skutecznie optymalizować pliki w formacie PNG przy pomocy darmowego narzędzia ScriptPNG.

ScriptPNG jest narzędziem zawierającym serię instrukcji, których celem jest maksymalne zmniejszenie rozmiaru plików graficznych. Program specjalizuje się w optymalizacji plików PNG (8-bit/24-bit), dodatkowo pełni rolę konwertera. Posiada pełne wsparcie dla obrazków w formatach BMP, GIF, TGA, PCX, TIF, TIFF, PNM, PBM, PGM (bezpośrednia konwersja wraz z optymalizacją do PNG). W procesie optymalizacji wykorzystuje kilka zewnętrznych narzędzi jak pngout, optipng, pngnq, pngoptimizer, deflopt (wszystkie wymienione narzędzia dołączone są do skryptu optymalizacyjnego).

ScriptPNG - instrukcja optymalizacji

Pobieramy ScriptPNG, archiwum rozpakowujemy dowolnym kompresorem plików. Aby zoptymalizować grafikę, przeciągamy ją na plik wykonywalny ScriptPNG. Otworzy się okno programu, w którym wybieramy metodę kompresji.

ScriptPNG, okno główne

Program oferuje cztery metody kompresji:

  1. Fast Optimization - szybka optymalizacja. Dokonywane są podstawowe operacje, jak usuwanie metadanych czy redukcja zbędnych palet.
  2. Complete Optimization - optymalizacja dokładna jest odrobinę wolniejsza. Zastosowano w niej podobne operacje jak przy szybkiej optymalizacji, mimo to dzięki zwiększeniu ilości prób i użyciu dodatkowych metod optymalizacyjnych uzyskuje się większy stopień kompresji.
  3. Convert to PNG8 - optymalizacja wraz z redukcją palety do 8 bitów (256 kolorów).
  4. XtremCompression - ekstremalna optymalizacja z możliwością określenia liczby przebiegów dla etapu wyboru tablic Huffman'a. Najlepsza metoda spośród wszystkich, ale pochłania najwięcej czasu.

Wpisujemy odpowiednią opcję 1, 2, 3 lub 4 i potwierdzamy wybór klawiszem ENTER. Rozpocznie się proces optymalizacji. W przypadku wyboru XtremCompression po ukończeniu pierwszej fazy program poprosi o podanie liczby przebiegów, wpisujemy liczbę np. 50 i potwierdzamy operację klawiszem ENTER.

ScriptPNG, ilość przebiegów

Rozpocznie się optymalizacja z wykorzystaniem losowo generowanych tablic Huffman'a. Postęp kompresji można na żywo obserwować w oknie programu.

Koniec optymalizacji

Po ukończeniu ostatniego etapu otrzymamy informację o pierwotnym rozmiarze pliku (IN) i pliku wynikowym (OUT) oraz czasie rozpoczęcia i zakończenia procesu optymalizacji. Plik źródłowy jest nadpisywany plikiem wynikowym, dla bezpieczeństwa optymalizację należy wykonywać na kopii pliku.

ScriptPNG w praktyce - wyniki testów

W ramach sprawdzenia efektywności programu przeprowadziłem szczegółowe testy. Wykorzystałem 5 grafik w formacie PNG o głębi kolorów 24-bit, różnej rozdzielczości i złożoności.

Przycisk  Klipart  Gradient  Zdjęcie  Zdjęcie

  • 1-przycisk.png - przycisk z przeźroczystym tłem.
  • 2-klipart.png - standardowy klipart z białym tłem.
  • 3-gradient.png - grafika wektorowa z przejściem tonalnym, tło białe.
  • 4-zdjecie.png - zdjęcie z dużą liczbą detali na białym tle.
  • 5-zdjecie.png - standardowa fotografia, konwertowana z formatu stratnego JPG.

W poniższej tabeli przedstawiam wyniki testów.

Zestawienie wyników optymalizacji PNG

W przypadku kompresji PNG 24-bit widać wyraźnie przewagę XtremCompression nad pozostałymi metodami. Przy zdjęciach wysokiej rozdzielczości oraz grafikach z przejściami tonalnymi czas kompresji się wydłuża.

Pierwsza metoda - Fast Optimization jest bardzo szybka, pozwala osiągnąć przyzwoite wartości współczynnika kompresji, mimo to do błyskawicznej optymalizacji lepszym wyborem będzie druga opcja - Complete Optimization, gdzie czas jest nieznacznie dłuższy, lecz efekty o wiele lepsze.

Przy metodzie XtremCompression dużą rolę odgrywa zdefiniowana liczba przebiegów. Czym większą wartość ustawimy, tym proces optymalizacji będzie dłuższy, jednocześnie można spodziewać się, że rozmiar pliku wynikowego będzie mniejszy. Aby zachować kompromis pomiędzy czasem a stopniem kompresji najrozsądniej ustawić wartości na poziomie 20-50 przebiegów.

Przy wyborze opcji Convert to PNG8 należy mieć świadomość, iż dojdzie do degradacji jakości. Dzięki tej metodzie kompresji można zmniejszyć rozmiar pliku nawet o 60-70%. Metodę można uwzględnić, jeżeli nie niesie to ze sobą znaczącego pogorszenia jakości pliku. Mimo włączenia niniejszej opcji do ScriptPNG nie zalecam jej stosować, z uwagi na brak możliwości wyboru algorytmu kwantyzacji kolorów (ang. color quantization algorithm).

Jeżeli zależy nam na czasie, powinniśmy wybrać metodę Complete Optimization, dzięki której bardzo szybko można uzyskać wyniki miejscami porównywalne z metodą ekstremalną. Jeśli zależy nam na jak największej kompresji, wybieramy XtremCompression, przy czym ustawiając mniejszą liczbę przebiegów, zaoszczędzimy trochę czasu. Optymalizacja na tym etapie i tak oparta jest na losowości, nawet wybór 100 czy 200 przebiegów nie zagwarantuje nam, że rozmiar pliku wynikowego ulegnie znaczącemu zmniejszeniu, oczywiście zwiększając wartość Trials, podnosimy to prawdopodobieństwo. Z moich obserwacji wynika również, że czym większa rozdzielczość obrazu tym efektywność optymalizacji z rondomizacją tablic Huffman'a jest większa, podobnie jest z obrazami gradientowymi zapisanymi w niskich rozdzielczościach.

Domeny

Mariusz Kołacz kompresja, optymalizacja, png, ScriptPNG

Skomentuj wpis - Komentarzy (2)

  1. Romanse pisze:

    Z tego co pamiętam jest jeszcze PNGout i PNgauntlet do kompresji Png.

  2. Mariusz Kołacz pisze:

    Tak, tego typu oprogramowania jest bardzo dużo, akurat PNGGauntlet to nakładka na konsolowy PNGOUT, który wprawdzie wykazuje najlepszą kompresję plików PNG spośród wszystkich narzędzi to jednak w starciu z innymi skryptami, które do zmniejszenia rozmiaru pliku PNG wykorzystują więcej niż jeden optymalizator przegrywa. Tak nawiasem mówiąc PNGOUT jest składnikiem praktycznie każdego znanego skryptu do optymalizacji PNG ;)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Poinformuj mnie o nowych komentarzach do tego wpisu.