Przejdź do zawartości

Portable Network Graphics: Różnice pomiędzy wersjami

Z Wikipedii, wolnej encyklopedii
[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Keisyz (dyskusja | edycje)
Zobacz też: drobne redakcyjne
JoelTutka5 (dyskusja | edycje)
Funkcja sugerowania linków: dodane 3 linki.
 
(Nie pokazano 23 wersji utworzonych przez 11 użytkowników)
Linia 1: Linia 1:
{{Inne znaczenia|2=[[PNG|inne znaczenia PNG]]}}
{{Format pliku infobox
{{Format pliku infobox
|nazwa = Portable Network Graphics (PNG)
|nazwa = {{J|en|Portable Network Graphics (PNG)}}
|ikona =
|ikona =
|rozszerzenia = .png
|rozszerzenia = .png
|mime = image/png
|mime = image/png
|producent = PNG Development Group (przekazane [[World Wide Web Consortium|W3C]])
|producent = {{J|en|PNG Development Group}} (przekazane [[World Wide Web Consortium|W3C]])
|data opracowania =
|data opracowania =
|wersja =
|wersja =
Linia 11: Linia 12:
|commons =
|commons =
}}
}}
'''PNG''' ([[język angielski|ang.]] ''Portable Network Graphics'') – [[grafika rastrowa|rastrowy]] [[Format pliku|format plików]] graficznych oraz system [[kompresja bezstratna|bezstratnej kompresji]] danych [[grafika komputerowa|graficznych]].
'''{{J|en|PNG}}''' ({{ang.|Portable Network Graphics}}) – [[grafika rastrowa|rastrowy]] [[Format pliku|format plików]] graficznych oraz system [[kompresja bezstratna|bezstratnej kompresji]] danych [[grafika komputerowa|graficznych]].


PNG został opracowany jako następca [[Graphics Interchange Format|GIF]] w [[1995 w informatyce|1995 roku]] po ogłoszeniu przez [[Unisys]] oraz [[CompuServe]] roszczeń [[patenty na oprogramowanie|patentowych]] dotyczących [[Kompresja (informatyka)|kompresji]] [[LZW]] używanej w formatach GIF oraz [[Tagged Image File Format|TIFF]]. Format PNG zalecany jest przez [[World Wide Web Consortium|konsorcjum W3C]] jako preferowany format grafiki dla sieci [[World Wide Web|WWW]]<ref>{{Cytuj | url=http://www.w3.org/Graphics/PNG/ | tytuł=Portable Network Graphics<!-- Tytuł wygenerowany przez bota --> | opublikowany=www.w3.org | język=en | data dostępu=2017-11-26}}</ref>. Dotyczy to takich obszarów jak choćby grafika prezentacyjna czy schematy blokowe.
PNG został opracowany jako następca [[Graphics Interchange Format|GIF]] w [[1995 w informatyce|1995 roku]] po ogłoszeniu przez [[Unisys]] oraz [[CompuServe]] roszczeń [[patenty na oprogramowanie|patentowych]] dotyczących [[Kompresja (informatyka)|kompresji]] [[LZW]] używanej w formatach GIF oraz [[Tagged Image File Format|TIFF]]. Format PNG zalecany jest przez [[World Wide Web Consortium|konsorcjum W3C]] jako preferowany format grafiki dla sieci [[World Wide Web|WWW]]<ref>{{Cytuj | url=http://www.w3.org/Graphics/PNG/ | tytuł={{J|en|Portable Network Graphics}} | opublikowany=www.w3.org | język=en | data dostępu=2017-11-26}}</ref>. Dotyczy to takich obszarów jak choćby [[grafika prezentacyjna]] czy schematy blokowe.


== Grafika ==
== Grafika ==
PNG nie jest obciążony [[patenty na oprogramowanie|patentami]]. Obsługuje stopniowaną przezroczystość (tzw. [[kanał alfa]]) oraz 48-bitową głębię kolorów czyli 16 bitów na kanał koloru. Dzięki temu można zapisać bezstratnie dowolne grafiki [[RGB]] (a nawet [[RGBA]], czyli RGB+Alfa, do 32 bitów na piksel). Obsługuje też osadzone profile kolorów [[International Color Consortium|ICC]], ICM i dane [[Exchangeable Image File Format|EXIF]]<ref>[http://www.libpng.org/pub/png/spec/1.2/PNG-Contents.html Portable Network Graphics specification]</ref>.
PNG nie jest obciążony [[patenty na oprogramowanie|patentami]]. Obsługuje stopniowaną przezroczystość (tzw. [[kanał alfa]]) oraz 48-bitową głębię kolorów czyli 16 bitów na kanał koloru. Dzięki temu można zapisać bezstratnie dowolne grafiki [[RGB]] (a nawet [[RGBA]], czyli RGB+Alfa, do 32 bitów na piksel). Obsługuje też osadzone profile kolorów [[International Color Consortium|ICC]], ICM i dane [[Exchangeable Image File Format|EXIF]]<ref>[http://www.libpng.org/pub/png/spec/1.2/PNG-Contents.html {{J|en|Portable Network Graphics specification}}]</ref>.


== Fotografia ==
== Fotografia ==
Linia 22: Linia 23:


== Wybrane narzędzia ==
== Wybrane narzędzia ==
Większość prostych narzędzi graficznych (np. [[IrfanView]] i [[XnView]]) umożliwia dowolną, ręczną redukcję koloru. Narzędzia bardziej zaawansowane (np. [[GIMP]]) oferują pracę na warstwach oraz automatyczną redukcję liczby kolorów, dostępną po przełączeniu z palety [[RGB]] (''Red-Green-Blue'') na tzw. [[tryb koloru|kolor indeksowany]]. W tym trybie możliwe staje się zapisanie tylko niezbędnych informacji – np. o kolorach dominujących.
Większość prostych narzędzi graficznych (np. [[IrfanView]] i [[XnView]]) umożliwia dowolną, ręczną redukcję koloru. Narzędzia bardziej zaawansowane (np. [[GIMP]]) oferują pracę na warstwach oraz automatyczną redukcję liczby kolorów, dostępną po przełączeniu z palety [[RGB]] ({{K|en|Red-Green-Blue}}) na tzw. [[tryb koloru|kolor indeksowany]]. W tym trybie możliwe staje się zapisanie tylko niezbędnych informacji – np. o kolorach dominujących.


== Stopień kompresji ==
== 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 linii pliku z osobna.
Jedną z technik zastosowanych w PNG jest używanie 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 linii 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 przyspieszyć zapisywanie{{fakt|data=2010-05}}.
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 przyspieszyć zapisywanie{{fakt|data=2010-05}}.


Istnieją programy na wolnych licencjach takie jak [[PNGcrush]], [[optipng]] i [[advpng]] (w pakiecie Advancecomp) oraz freeware'owy [[PNGOUT]], 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 [[Graphics Interchange Format|GIF]]{{fakt|data=2010-05}}.
Istnieją programy na wolnych licencjach takie jak [[PNGcrush]], [[optipng]] i [[advpng]] (w pakiecie Advancecomp) oraz [[freeware]]’owy {{link-interwiki|PNGOUT|Q=Q4046219}}, 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 [[Graphics Interchange Format|GIF]]{{fakt|data=2010-05}}.


== Szczegóły techniczne ==
== Szczegóły techniczne ==
Linia 37: Linia 38:
Kompresja polega na dokonaniu jednej z transformacji każdej z linii [[obraz (technika)|obrazu]], po czym wynik jest kompresowany za pomocą [[algorytm]]u [[deflate]]. Numer transformacji jest zapisywany przed linią.
Kompresja polega na dokonaniu jednej z transformacji każdej z linii [[obraz (technika)|obrazu]], po czym wynik jest kompresowany za pomocą [[algorytm]]u [[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ą [[piksel]]a a wartością obliczoną na podstawie funkcji przewidującej, działającej w oparciu o [[bit]]y już odkodowane. Zwykle różnica ta jest niewielka.
Transformacje mają na celu przystosowanie danych do łatwiejszej kompresji. Zapisują one różnicę między wartością rzeczywistą [[piksel]]a, a wartością obliczoną na podstawie funkcji przewidującej, działającej w oparciu o [[bit]]y już odkodowane. Zwykle różnica ta jest niewielka.


Funkcje przewidujące to m.in.:
Funkcje przewidujące to m.in.:
Linia 47: Linia 48:


Przy zapisie (kompresji) plików PNG stosowana jest często biblioteka [[zlib]].
Przy zapisie (kompresji) plików PNG stosowana jest często biblioteka [[zlib]].

=== Sygnatura ===
Pierwsze 8 bajtów pliku PNG jest następującą sygnaturą:

<code>89 "PNG" 0D 0A 1A 0A</code><br>89 – charakterystyczny bajt, którego prawdopodobieństwo wystąpienia na początku [[Plik tekstowy|pliku tekstowego]] jest niewielkie

<code>"PNG"</code> – ciąg identyfikujący format pliku

<code>0D 0A</code> – sekwencja końca linii z formatu DOS-owego

<code>1A</code> – znak końca pliku w systemach z rodziny Windows

<code>0A</code> – bajt pozwala wykryć konwersję z unixowego formatu końca linii na DOS-owy


== Zobacz też ==
== Zobacz też ==
* [[Animated Portable Network Graphics]] (APNG)
* [[Animated Portable Network Graphics|{{J|en|Animated Portable Network Graphics}}]] ({{J|en|APNG}})
* algorytmy kompresji: [[Deflate]], [[Gzip]]
* algorytmy kompresji: [[Deflate]], [[Gzip]]
* [[kompresja bezstratna]]
* [[kompresja bezstratna]]
Linia 57: Linia 71:
== Przypisy ==
== Przypisy ==
{{Przypisy}}
{{Przypisy}}

== Bibliografia ==
* {{Cytuj |autor = Gynvael Coldwind |redaktor = Tomasz Łopuszański |tytuł = Zrozumieć programowanie |data = 2017 |isbn = 978-83-01-19787-3 |wydanie = 1 |miejsce = Warszawa |wydawca = Wydawnictwo Naukowe PWN SA |s = 459–461}}


== Linki zewnętrzne ==
== Linki zewnętrzne ==
Linia 62: Linia 79:
* {{RFC|2083}}
* {{RFC|2083}}
* [http://www.libpng.org/pub/png/ strona domowa PNG]
* [http://www.libpng.org/pub/png/ strona domowa PNG]
* [http://www.w3.org/TR/2003/REC-PNG-20031110/ Rekomendacja W3C dla formatu PNG]
* [https://www.w3.org/TR/2003/REC-PNG-20031110/ Rekomendacja W3C dla formatu PNG]
* [http://www.w3.org/Graphics/PNG/ strona W3C]
* [https://www.w3.org/Graphics/PNG/ Strona W3C]


{{Formaty plików graficznych}}
{{Formaty plików graficznych}}

Aktualna wersja na dzień 07:44, 27 lis 2024

Portable Network Graphics (PNG)
ilustracja
Rozszerzenia pliku

.png

Typ MIME

image/png

Producent

PNG Development Group (przekazane W3C)

Typ

bezstratna kompresja grafiki rastrowej

Strona internetowa

PNG (ang. Portable Network Graphics) – rastrowy 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. Format PNG zalecany jest przez konsorcjum W3C jako preferowany format grafiki dla sieci WWW[1]. Dotyczy to takich obszarów jak choćby grafika prezentacyjna czy schematy blokowe.

Grafika

[edytuj | edytuj kod]

PNG nie jest obciążony patentami. Obsługuje stopniowaną przezroczystość (tzw. kanał alfa) oraz 48-bitową głębię kolorów czyli 16 bitów na kanał koloru. Dzięki temu można zapisać bezstratnie dowolne grafiki RGB (a nawet RGBA, czyli RGB+Alfa, do 32 bitów na piksel). Obsługuje też osadzone profile kolorów ICC, ICM i dane EXIF[2].

Fotografia

[edytuj | edytuj kod]

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 48-bitowego RGB, w którym można zapisywać obraz w milionach kolorów i bez jakichkolwiek zniekształceń właściwych formatom stratnym, do jakich należy np. popularny JPEG.

Wybrane narzędzia

[edytuj | edytuj kod]

Większość prostych narzędzi graficznych (np. IrfanView i XnView) umożliwia dowolną, ręczną redukcję koloru. Narzędzia bardziej zaawansowane (np. 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.

Stopień kompresji

[edytuj | edytuj kod]

Jedną z technik zastosowanych w PNG jest używanie 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 linii 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 przyspieszyć zapisywanie[potrzebny przypis].

Istnieją programy na wolnych licencjach takie jak PNGcrush, optipng i advpng (w pakiecie Advancecomp) oraz freeware’owy PNGOUT(inne języki), 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[potrzebny przypis].

Szczegóły techniczne

[edytuj | edytuj kod]

Format PNG zapisuje tylko pojedyncze pliki graficzne (nie ma animacji). Analogicznymi formatami mającymi możliwość zapisu sekwencji grafiki animowanej w jednym pliku są MNG i APNG.

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.

Funkcje przewidujące to m.in.:

  • tyle samo co piksel po lewej
  • tyle samo co średnia wartości pikseli po lewej i na górze
  • tyle samo co suma wartości pikseli po lewej i na górze minus piksel po lewej górnej przekątnej

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

Przy zapisie (kompresji) plików PNG stosowana jest często biblioteka zlib.

Sygnatura

[edytuj | edytuj kod]

Pierwsze 8 bajtów pliku PNG jest następującą sygnaturą:

89 "PNG" 0D 0A 1A 0A
89 – charakterystyczny bajt, którego prawdopodobieństwo wystąpienia na początku pliku tekstowego jest niewielkie

"PNG" – ciąg identyfikujący format pliku

0D 0A – sekwencja końca linii z formatu DOS-owego

1A – znak końca pliku w systemach z rodziny Windows

0A – bajt pozwala wykryć konwersję z unixowego formatu końca linii na DOS-owy

Zobacz też

[edytuj | edytuj kod]

Przypisy

[edytuj | edytuj kod]
  1. Portable Network Graphics [online], www.w3.org [dostęp 2017-11-26] (ang.).
  2. Portable Network Graphics specification

Bibliografia

[edytuj | edytuj kod]
  • Gynvael Coldwind, Zrozumieć programowanie, Tomasz Łopuszański (red.), wyd. 1, Warszawa: Wydawnictwo Naukowe PWN SA, 2017, s. 459–461, ISBN 978-83-01-19787-3.

Linki zewnętrzne

[edytuj | edytuj kod]