PNG

PNG (ang. Portable Network Graphics) to format plików graficznych oraz system bezstratnej kompresji danych graficznych.

PNG został opracowany jako następca GIF w 1995 roku po ogłoszeniu przez Unisys oraz CompuServe roszczeń patentowych dotyczących kompresji LZW używanej w formatach GIF oraz TIFF.

Grafika Pomijając kwestie patentowe przestarzałego formatu GIF, główna przewaga PNG polega na obsłudze stopniowanej przezroczystości (tzw. kanału alfa) i na akceptowaniu większej, niż 8-bitowa, głębi koloru (>256 kolorów). Dzięki temu można zapisać bezstratnie dowolne grafiki RGB.

Fotografia
Format PNG znajduje różne zastosowania. Przewiduje tryby o niskiej ilości kolorów (paletowe od 2 do 256 oraz tryb skali szarości), przydatne w sytuacjach, gdy nadmiarowa informacja jest niewskazana (tj. gdy ważniejsza od subiektywnej wierności oryginałowi jest treść obrazu). Ma także tryb 24-bitowego RGB w którym można zapisywać np. szczególnie cenne fotografie z bezkompromisową jakością - w milionach kolorów i bez jakichkolwiek zniekształceń właściwych formatom stratnym, do jakich należy np. popularny JPEG.

Wybrane narzędzia
Obecnie nawet proste narzędzia graficzne (jak np. popularny, bezpłatny IrfanView na platformę Microsoft Windows) umożliwiają już dowolną, ręczną redukcję koloru. Narzędzia bardziej zaawansowane (jak np. również darmowy, ale już wieloplatformowy GIMP) oferują pracę na warstwach oraz automatyczną redukcję liczby kolorów, dostępną po przełączeniu z palety RGB (Red-Green-Blue) na tzw. kolor indeksowany. W tym trybie możliwe staje się zapisanie tylko niezbędnych informacji - np. o kolorach dominujących.

Inne formaty bezstratne
W dziedzinie archiwizacji fotografii format PNG okazuje się bardziej efektywny od starszych, uznanych, "profesjonalnych" formatów bezstratnych takich jak TIFF i tylko nieznacznie mniej efektywny od formatów najnowszych - jak LWF czy JPEG 2000 - posiadających funkcję kompresji bezstratnej. Te ostatnie wciąż nie stanowią jednak realnej konkurencji z powodu małego rozpowszechnienia i braku wsparcia w oprogramowaniu użytkowym.

Stopień kompresji
Jedną z technik zastosowanych w PNG jest aplikowanie prostych filtrów graficznych, które mogą uprościć dane obrazu przed kompresją, zwiększając jej wydajność. Jest dostępne kilka filtrów (np. różnica między sąsiednimi pikselami/liniami), które są dobierane dla każdej liniii pliku z osobna.

Niektóre programy pozwalają wybrać "stopień kompresji" - nie jest to cecha formatu PNG, a jedynie ustawienie specyficzne dla danego programu, który np. rezygnuje z dobierania najlepszej kombinacji filtrów, aby przyśpieszyć zapisywanie.

Są programy takie jak PNGOUT i optipng, które potrafią optymalizować pliki PNG - sprawdzają ogromną ilość kombinacji filtrów PNG i parametrów kompresora gzip, dając w rezultacie pliki dużo mniejsze, niż zapisywane popularnymi programami graficznymi. Tak zoptymalizowane pliki PNG są prawie zawsze mniejsze od plików GIF.

Przyszłość
Format PNG zalecany jest przez konsorcjum W3C jako najlepszy format grafiki dla sieci WWW. Szacuje się, iż PNG w sieciach WWW zostanie częściowo wyparty w następnych latach przez grafikę SVG. Dotyczy to takich obszarów jak choćby grafika prezentacyjna czy schematy blokowe, bo np. archiwizacja materiałów papierowych (przez skanowanie) powinna jednak pozostać domeną formatów binarnych - takich jak PNG.

Z drugiej strony maleją szanse na powstrzymanie przez PNG ekspansji formatu PDF i usprawnienie np. korporacyjnego obiegu dokumentów w formie załączników do poczty elektronicznej. Przewaga PNG, polegająca na plikach o niewielkich rozmiarach (warunek: zoptymalizowanych), jak również małych i szybkich programach graficznych do ich prezentacji, traci na znaczeniu wobec stale rosnącej mocy obliczeniowej komputerów.

Szczegóły techniczne
Format PNG zapisuje tylko pojedyncze pliki graficzne (nie ma animacji). Analogicznym formatem mającym możliwość zapisu sekwencji grafiki animowanej w jednym pliku (np. prostych animacji) jest MNG.

Kompresja polega na dokonaniu jednej z transformacji każdej z linii obrazu, po czym wynik jest kompresowany za pomocą algorytmu deflate. Numer transformacji jest zapisywany przed linią.

Transformacje mają na celu przystosowanie danych do łatwiejszej kompresji. Zapisują one różnicę między wartością rzeczywistą piksela a wartością obliczoną na podstawie funkcji przewidującej, działającej w oparciu o bity już odkodowane. Zwykle różnica ta jest niewielka.

PNG jest określony standardem RFC 2083. Używany przez niego algorytm deflate jest określony w RFC 1951.