PNG -- Portable Network Graphics

Tuukka Tawast

LuK-tutkielma 25.10.2000

Jyväskylän yliopisto

tietotekniikan laitos

Tiivistelmä.

LuK-tutkielmassa esitellään PNG-kuvaformaatin ominaisuuksia, sekä kerrotaan sen eduista ja haitoista muihin kuvantallennusmuotoihin verrattuna.

Termiluettelo
Alpha-arvo             Kuvapisteen läpinäkyvyysaste.
Gamma-korjaus          Näytön valoisuuskorjaus.
GIF                    Compuserven Graphics Interchange Format-kuvaformaatti.
Harmaasävy             Kuva sisältäen sävyjä mustan ja valkean väliltä.
Indeksoitu väri        Valittu paletti määrää pikselin lopullisen värin.
JPEG                   Joint Photographic Experts Groupin kehittämä
                       kuvaformaatti.
MNG                    Multiple Network Graphic, on PNG:n sisarformaatti.
Optionaalinen pala     Valinnainen osa PNG-tiedostossa.
Pakollinen pala        Pakollinen osa PNG-tiedostossa.
Pikseli                Näytön kuvapiste.
PNG                    Portable Network Graphics-kuvaformaatti.
TIFF                   Tagged Image File Format-kuvaformaatti.

Sisältö

1.Johdanto

Tutkielmassa perehdytään vuonna 1995 luotuun tietotekniikan kuvaformaattiin nimeltä PNG (Portable Network Graphics, äännetään "ping"). Tutkielmassa kuvataan pääkohtia PNG:n rakenteesta ja ominaisuuksista. PNG:n soveltuvuutta erilaisten kuvien tallennukseen esitellään tapauskohtaisesti läpi sen käyttöominaisuuksien perusteella.
PNG-formaatin määritteli riippumaton PNGDG-ryhmä (Portable Network Graphics Development Group), jonka ns. johtajana tai pääkehittäjänä toimi Thomas Boutell. Sen kehitys sai alkunsa lainsäädännöllisistä syistä, joista suurin oli laajalti levinneen GIFin käytöstä kerättävät tekijänoikeusmaksut. PNG on kuvaformaatti, joka on kehitetty kuvankäsittelyn ja Internet-sivujen tarpeisiin.
Luvussa 2 käsitellään aikaisempaa tilannetta kuvaformaattien suhteen, jonka johdosta päädyttiin PNGDG-nimisen Internet-työryhmän perustamiseen. Luku 3 kertoo PNG:n ominaisuuksista sekä siitä, mitä lähtökohtia ja asioita otettiin huomioon suunnittelussa. Luku 4 esittelee varsinaisen formaatin tiedosto-ominaisuuksia ja rakennetta. Luku 5 kertoo kuvaominaisuuksista. Luvussa 6 pohditaan PNG:n etuja, haittapuolia ja soveltuvuutta erilaisiin kuvantallennuskohteisiin.

2.PNG:n historiaa

Luku pohjustaa tutkielmaa kertomalla taustoista, jotka saivat PNG:n kehitystyön alkamaan. Luku pohjautuu lähteeseen [2].
Kuvanpakkauksen alkujuuret juontavat aina vuosiin 1977 ja 1978, jolloin kaksi israelilaista tiedemiestä Jacob Ziv ja Abraham Lempel julkaisivat kaksi dataa hukkaamatonta algorimia. Terry Welch Sperry-yhtiöstä (nykyinen UNISYS) kehitti algoritmista LZ78 erittäin nopean muunnelman nimeltä LZW. Tälle algorimille hakivat patenttia Welch, sekä IBM:n tutkijat Victor Miller ja Mark Wegman. Molemmille ryhmille myönnettiin erikseen patentit, jonka Welch sai joulukuussa 1985 sekä Miller ja Wegman maaliskuussa 1989.
Samanaikaisesti vuonna 1987 kehitti Compuserve (nykyään Electric Communities) Bob Berryn johdolla omaa GIF-kuvaformaattiaan. Formaatti pohjautui LZW-algoritmiin, jota yleisesti luultiin vapaalevitteiseksi. Patentti tuli tietoisuuteen vasta, kun GIF oli julkaistu ja levitetty laajaan käyttöön. Kaikki muuttui vuoden 1994 lopussa, kun Unisys ilmoitti alkavansa kerätä tekijänoikeuspalkkioita GIFiä tukevista ohjelmistoista. Tapaus aiheutti laajan keskustelun Internetissa.
Ensimmäinen versio PNG-formaatista oli Thomas Boutellin Internetin keskusteluryhmässä julkaisema PBF (Portable Bitmap Format) keskiviikkona 4. tammikuuta 1995. Muutamassa viikossa ilmaantui innokkaita kehittäjiä uudelle formaatille. Samalla sai alkunsa työryhmä, jota johti Thomas Boutell. Ryhmän tehtävänä ei ollut pelkästään suunnitella korvaajaa GIF-formaatille, vaan parempi, pienempi, laajempi ja ilmainen formaatti. PNG oli nähnyt päivänvalon.

3.Kehityslähtökohdat ja -tavoitteet

Kun PNG:tä lähdettiin alunperin kehittämään GIFin korvaajaksi, keskityttiin kolmeen oleelliseksi katsottuun asiaan. Määriteltiin GIFistä säilytettävät ja lisättävät ominaisuudet sekä millaiseksi PNG suunnitellaan. Päämääränä oli siis säilyttää GIFin hyvät puolet ja lisätä uusia ominaisuuksia. Luku perustuu lähteeseen [1].

3.1.GIFistä säilytetyt ominaisuudet

GIFistä haluttiin pääasiassa säilyttää neljä tärkeintä pääominaisuutta. Ensimmäinen ominaisuus oli 100 % pakkaustapa. Uuden formaatin tuli olla siten tietoa hukkaamaton. Toisena haluttiin säilyttää kyky luoda kuvan osia läpinäkyviksi tekemällä vaikutelma epäsuorakulmaisesta kuvasta.
Kolmas ominaisuus oli täydellinen laitteisto- ja alustariippumattomuus, sillä PNG:n tuli toimia itsenäisenä riipumattomana formaattina. Kuvaformaatin kehittäminen ja dokumentointi tuli olla julkista ja lähdekoodit kaikkien saatavilla. Neljäntenä pääominaisuutena haluttiin säilyttää latausaikainen edistyvä näyttö (engl. progressive display), jotta formaatti soveltuisi Internetin WWW-käyttöön. Muita asioita, joita GIFistä otettiin mukaan olivat indeksoidut värikuvat aina 256 väriin asti, sekä tekstin sisällyttäminen kuvatiedostoon.

3.2.Uudet lisäominaisuudet

Uusina lisäominaisuuksina PNG:hen haluttiin sisällyttää muutamia tärkeitä ominaisuuksia, joita GIFissä ei ollut mahdollista käyttää. Täysvärikuvat tuli pystyä näyttämään 48-tavuisina pikseliä kohti ja harmaasävykuvien tallennus aina 16-tavuun asti pikselille.
Lisänä GIFiin verrattuna PNG:hen haluttiin luoda yleinen läpinäkyvyysverhoilu (engl. general transparency mask) ja kuvan gamma-tieto (engl. gamma-information). Internet-käyttöä varten haluttiin lisäksi kehittää luotettavaa eteenpäin havaitsevaa tiedostotarkistusta ja GIFiä nopeampi "edistyvä kuvanäyttö" (engl. progressive display).

3.3.Suunnittelu PNG-formaatiksi

PNG:tä lähdettiin suunnittelemaan ensisijaisesti käyttöoikeusvapaaksi formaatiksi, jota kaikki voisivat käyttää. Paljon huomiota ja tarkkuutta PNGDG-työryhmä on kiinnittänyt siihen, että PNG on käyttäjälleen "ilmainen". Toisena suunnittelun pääkohtana pidettiin siirrettävyyden ja käytön helppoutta. Tähän ei ole vielä täysin päästy, koska formaatin levinneisyys on vielä rajoittunut.
Kolmantena suunnittelutavoitteena oli PNG-kuvien siirrettävyys ohjelmien välillä. Formaatin tulisi siis olla niin yhdenmukainen, että kaikki dekooderit pystyisivät käsittelemään kuvia kehitysversioasteesta huolimatta. Samalla PNG:n tulisi olla sellainen, että siihen olisi mahdollista kehittää lisää ominaisuuksia ajan myötä. Viimeisenä, muttei vähäisempänä pyrittiin hyvään pakkautuvuuteen, joka on yksi tärkeimmistä tekijöistä Internet-käytössä. Tiedostojen kokovertailua on esitelty taulukossa 6.2.1.

4.PNG:n tiedosto-ominaisuudet

Tässä luvussa esitellään PNG-tiedoston ominaisuuksia ja rakennetta yksityiskohtaisemmin. Luku pohjautuu lähteeseen [1].

4.1.Tiedon esitysmuoto

PNG käyttää yli yhden tavun kokonaisluvuissa ns. verkkotavujärjestystä (engl. Network byte order). Tämä tarkoittaa sitä, että kahden tavun kokonaisluvuissa merkitsevin tavu esitetään ensin ja vähiten merkitsevä viimeisenä. Nelitavuisissa kokonaisluvuissa järjestys on samanlainen (B3, B2, B1 ja B0). Käytettävät luvut ovat etumerkittömiä kokonaislukuja.

4.2.Tiedostorakenne

Varsinaisen PNG-tiedoston alussa on aina samanlainen kahdeksan tavun tunnus (engl. signature), joka on lukuina esitettynä 137 80 78 71 13 10 26 10. Ensimmäisen tavun (137) poikkeavuus tavallisista ASCII-arvoista estää tiedoston väärän tunnistuksen esimerkiksi tekstitiedostoksi. Numerosarja kertoo, että tiedosto sisältää yksittäisen PNG-kuvatiedoston, joka alkaa IDHR-palasta päättyen IEND-palaan. Tavut 2-4 nimeävät PNG-formaatin.
Tunnuksen jälkeinen varsinainen PNG-tiedosto koostuu paloista, joissa on 4 osaa: pituus, tyyppi, tieto-osa ja CRC-tarkistussumma. Tiedoston kannalta osa paloista on pakollisia (engl. critical chunks) ja osa optionaalisia (engl. anchillary chunks).
Järjestyksellisesti tiedoston tulee alkaa IDHR-palalla ja loputtava IEND-palaan. Kuvatiedoston koostumuksessa on oltava 4 erilaista pakollista palaa (kts. taulukko 4.2.1). Tarvittaessa mukana on lisäksi korkeintaan 13 erilaista optionaalista palaa (kts. taulukko 4.2.2). Palojen ensimmäinen kirjain ilmoittaa, onko pala pakollinen vai optionaalinen osa PNG-kuvatiedostoa. Iso kirjain merkitsee pakollisuutta ja pieni valinnaisuutta. Paloja ja niiden järjestystä esitellään seuraavissa taulukoissa 1 ja 2. Välit kuvaavat valinnaisten palojen sijoituspaikkoja suhteessa pakollisiin paloihin.

taulukko:järjestys
Taulukko 4.2.1: Optionaaliset palat sijoittuvat PNG-kuvatiedostossa pakollisten palojen väleihin.

taulukko:palat
Taulukko 4.2.2: PNG-kuvatiedoston palat.

4.3.Tiedostotarkistus

PNG käyttää kuvatiedostojen palojen muuttumattomuuden tarkistukseen CRC-algoritmia (engl. cyclic redundancy check). Algoritmi toimii binääritasolla. CRC-algoritmiä pidetään erittäin hyvänä tarkistusmenetelmänä. Yleisiä käytössä olevia algoritmeja ovat: CRC-12, CRC-16, CRC-CCITT ja CRC-32.
PNG:ssä käytetään CRC-32:ta. Käytettävä jakaja on muotoa

jakajapolynomi

eli binäärimuodossa 10000010 01100000 10001110 11011011. Jakajalla jaetaan kaikista tiedoston paloista jakojäännös, joka tallennetaan kunkin palan loppuun. Laskennan nopeuttamiseksi käytetään yleensä apuna esilaskettua taulukkoa. Mahdolliset eroavaisuudet jakojäännöksessä ilmoittavat muuntumisen matkalla ja paljastavat tiedonsiirtovirheet. CRC:stä on saatavilla lisätietoa lähteistä [5] ja [6].

4.4.Pakkausalgoritmi

PNG käyttää pakkauksessa tietoa hukkaamatonta "liukuvaan ikkunointiin" perustuvaa menetelmää (engl. sliding window). Algoritmi käyttää ikkunoinnin kokona 256 tavusta 32 kilotavuun ja läpikäy kuvatiedoston IDAT- paloista muodostuvan syöttövirran. Nämä "ikkunat" muodostavat pakatun tietueen.
Pakkaustapa on johdannainen LZ77:sta, jota käytetään miltei kaikissa pkzip/zip-johdannaisissa ohjelmissa. Erityistä huolellisuutta on käytetty, jotta pakkaustapa on pysynyt patenttivapaana. Siirrettävät C-kieliset koodit ovat vapaasti saatavilla. Dokumentoinnin sekä käyttökelpoisen ja tehokkaan koodin ansiosta pkzip-johdannainen järjestelmä on hyvä valinta PNG-pakkausalgoritmiksi.
Tietovirrat (engl. datastreams) pakkautuvat zlib-formaattiin, joka koostuu seuraavista rakenneosista:

     - pakkaustapa tai lippujen (engl. flags) koodi          1 tavu
     - lisäliput tai tarkistustavut                          1 tavu
     - pakatut tietotavut                                    n tavua
     - tarkistusarvo                                         4 tavua

Zlibissä käytettävä tarkistusarvo on formaatin oma ikkunakohtainen arvo, joka siis eroaa luvussa 4.3 esillä olleesta palakohtaisesta CRC:stä. Zlibin tarkastusarvo on suunniteltu havaitsemaan pakkaamisessa ja purkamisessa tapahtuneet virheet.

5.PNG:n kuvaominaisuuksia

Tässä luvussa esitellään PNG-tiedoston kuvaominaisuuksia ja niiden vaikutusta vaikutusta kuvaan. Luku perustuu lähteeseen [1].

5.1.Alpha-kanava

Alpha-kanava (engl. alpha channel) on keino luoda PNG-kuvaan läpinäkyvyyttä. Sillä voidaan tuottaa kuvaan efektejä, joista esimerkiksi kaksitasokirjoituksella kirjaimet saadaan "nousemaan" taustastaan katsojaa kohti eriasteisena.
PNG:ssä alpha-tietoa voidaan sisällyttää kaikkiin kuvatyyppien pikseleihin eli täysväriin, harmaasävyyn ja palettipohjaiseen 8-tavun kuvaan. PNG:ssä kuvapisteen läpinäkyvyysarvo voidaan määritellä yleiskuvissa 256 eri asteeseen. Kuvapisteestä tallennetaan nelitavuinen arvo sisältäen red-, green-, blue- ja alpha-arvot.
Kuvassa 5.1.1 on taivastausta määritelty läpinäkyväksi. Tämä saa aikaan sen, että tutkielman paperiversiossa kuvan tausta on valkoinen. Alpha-kanava myös pehmentää oksien rajaa ja jään läpinäkyyttä. Todellinen etu on nähtävissä varsinaisessa PNG-kuvassa. Kuva 5.1.2 on alkuperäisversio jääpuikkokuvasta, josta PNG-versio on tehty.


Kuva 5.1.1: IceAlpha-kuvasta tehty PNG. Kuva-alaa on muutettu tekijän toimesta [7].


Kuva 5.1.2: IceAlpha-kuva alkuperäisessä JPG-muodossa [7].

5.2.Gamma-korjaus

Gamma-korjausta (engl. gamma correction) käytetään kuvantallennuksessa tapana vaikuttaa laitteistoista johtuviin valoeroihin kuvan ulkoasussa. Gamma-korjauksessa voidaan lineaarisella funktiolla korjata kuvan värien näkyvyyttä, esimerkiksi muuttamalla kuvaputken jännitesyöttöä.
PNG:ssä käytetään omaa optionaalista palaansa, joka määrittelee käytettävän gamma-korjauksen. Korjauksen avulla kuva saadaan näkymään selkeänä laitteistosta riippumatta. Palan arvo on nelitavuinen kokonaisluku. Kuvassa 5.2.1 on esitetty sekä normaali että mukautettu gamma-käyrä.
Yleisen muuntofunktion kaava on funktio , jossa ulostulon ja syötön arvot ovat väliltä [0-1]. Kuvassa 5.2.2 on esimerkki siitä, miten sama kuva voi näkyä eri laitteistoilla. Valoisuuden vaihtelu voi olla suurtakin.

Gammakorjaus
Kuva 5.2.1: Kaksi gamma-käyrää [4].

Gammavaihtelu
Kuva 5.2.2: Eri valoisuusasteita samalle kuvalle. Keskimmäinen normaali [8].

5.3.Lomitus

PNG:ssä voidaan käyttää tallennettaessa kahta menetelmää. Tallennustapa määritellään IHDR-palassa.
Ensimmäinen tapa (tyyppi 0) on normaali perustallennus, jossa kuva tallennetaan riveittäin vasemmalta oikealle ja ylhäältä alas. Lomitusta ei tällöin varsinaisesti käytetä.
Toista vaihtoehtoa eli varsinaista lomitusta (tyyppi 1), kutsutaan Adam7-menetelmäksi kehittäjänsä Adam M. Costellon mukaan. Se perustuu koko kuvatiedoston jakamiseen 8x8 pikselin alueisiin. Jokaisella läpikäyntikerralla lisätään pikseleitä taulukon 3 osoittamalla tavalla. Seitsemän läpikäyntikerran jälkeen kuva on kokonaisuudessaan piirretty näytölle (kts. taulukot 5.3.1 ja 5.3.2 sekä kuva 5.3.3).
Adam7-menetelmän selvänä etuna on, että se neljännen läpikäyntikerran jälkeen kuva on jo hyvin hahmottunut, vaikka koko tiedostosta on ladattu vasta 12,5%. Kuvasta saa hyvän käsityksen lyhyellä latausajalla, koska koko kuva-alueelle läpikäyntikerroittain lisättävät pikselit on jaoteltu tasaisesti. Lomituksen käyttö kasvattaa PNG-kuvatiedoston kokoa 3-5 %, mutta on ehdottoman suositeltavaa isoille kuville Internet-käytössä. Turhaksi havaitun kuvan lataus voidaan tällöin tarvittaessa keskeyttää.

adam7
Taulukko 5.3.1: Läpikäyntikerralla lisättävät pikselit jokaiselle 8x8-alueelle.

läpikäyntikerrat
Taulukko 5.3.2: PNG:n lomitus Adam7-menetelmällä [3, s. 125-129].

  lomitus
Kuva 5.3.3: Havainnollinen esimerkki kuvapisteiden lisäämisestä [9].

5.4.Suodatinalgoritmit

Suodatin on kuvantallennuksen keino laskea kuvatiedostosta pikseleiden välisiä muutosarvoja, joita sitten olisi mahdollista pakata pienempään tilaan. Tavoitteena on siis kertoa muutos johonkin toiseen pisteeseen. Ei nimittäin ole tarpeellista aina tallentaa samaa arvoa uudelleen. Muutos samanlaisilla pisteillä kun on 0.
Näin saadut arvot voivat pakkautua pienempään tilaan kuin alkuperäinen kuvatiedosto. Suodattimen käytöllä ei aina saavuteta merkittävää parannusta kuvatiedoston koossa, vaan lopputuloksena voi olla huomattavasti suurempikin tiedosto. Parhaimmissa tapauksissa etu voi kuitenkin olla jopa 300 kertaa pienempi tiedosto. PNG:ssä suodatinalgoritmiä (engl. filter algorithm) voidaan käyttää ennen varsinaista pakkaamista.
Suodatinalgoritmin tyyppi määrätään IDHR-palassa (kts. taulukko 4.2.2. sivulla 4.2.2.). Vaihtoehtoja PNG:ssä on kuusi erilaista:

     0 None      Ei suodatusta, jolloin tavut tallennetaan normaalisti.
     1 Sub       Ero aikaisempaan tavuun tallennetaan.
     2 Up        Ero yläpuoliseen tavuun tallennetaan.
     3 Average   Suodatin laskee keskiarvon ylä- ja vasemmanpuoleisesta pikselistä.
     4 Paeth     Suodatin laskee lineaarifunktiolla kolmesta pikselistä (vasen, vasen 
		 yläkulma ja yläpuolinen) tuloksen. Suodatin valitsee tulosta lähinnä 
                 olevan naapuripikselin arvon tallennettavaksi. Kehittäjänä Alan J. Paeth.
     6 Adaptive  Suodatin laskee joka riville optimaalisen filtterin. 
		 													 Ajatus useamman filtterin käytöstä on alustava PNG:n 
															 kehittäjien suunnalta.

6.PNG verrattuna muihin formaatteihin

Valinta PNG:n ja muiden kuvaformaattien välillä vaihtelee kuvan käyttötarkoituksen ja vaadittujen ominaisuuksien perusteella. Tässä luvussa esitellään muutamilla periaatteilla PNG-formaatin etuja ja puutteita muihin kuvaformaatteihin verrattuna. Luku pohjautuu lähteeseen [3].

6.1.Edut

PNG on hyvä valinta lopputuloksen kannalta tapauksissa, joissa halutaan esittää kuva tai sen osia läpinäkyvänä. Hyviä käyttökohteita ovat myös paljon värittömiä alueita sisältävät viivakuvat (engl. line art), hukkaamattomasti pakattavat täysvärikuvat sekä rajattomat värikuvat, joissa väri vaihtuu rajatta toiseksi.

6.2.Puutteet

PNG:tä ei pidä käyttää valokuviin, animaatioihin ja kuviin, joiden näkyvyys halutaan varmistaa mahdollisimman laajalle käyttäjäkunnalle.
Varma Internet-näkyvyys turvataan tässä vaiheessa vielä jollain muulla formaatilla. PNG on ajan kuluessa yleistymässä WWW-selaimien ja kuvankäsittelyohjelmien standardiksi nopeaa vauhtia. Useat valokuvat ovat liian monimutkaisia pakkautuakseen tehokkasti PNG:llä, joten JPEG on yleisesti parempi valinta. Yleisenä ohjeena voidaankin pitää, että hukkaavia algoritmeja kannattaa käyttää valokuviin (JPEG, TIFF) ja hukkaamattomia (GIF, PNG) "piirrettyihin kuviin".
Tiedostojen koon kasvaessa PNG saattaa menettää edun toisiin formaatteihin nähden. Taulukossa 6.2.1. näin ei ole käynyt, joka johtunee pitkälti onnistuneen suodatinvalinnan ansiosta ja siitä, että JPEGiä on käytetty hukkamattomana 100 % versiona.
PNG on suunniteltu ainoastaan yhden kuvan formaatiksi. Animaatiota varten kehitetään MNG-formaattia animaatioihin. GIF tai MNG ovat parempia valintoja animaatioihin.

taulukko:kuvakoot
Taulukko 6.2.1: Kuvien kokovaihteluesimerkki [4, s. 38]. (ES=ei saatavilla).

6.3.Soveltuvuus

PNG soveltuu hyvin tulevaisuuden Internet- ja erikoisefektikäyttöön, koska sen ominaisuudet tukevat nopeaa virhehavainnointia, tiedon hukkaamattomuutta ja läpinäkyvyyttä. Ainoa rajoite tällä hetkellä on ohjelmistotuen levinneisyys.
PNG:tä voidaan käyttää hyvin myös peruskuvissakin, mutta mahdollisesti muut olemassaolevat formaatit saattavat toimia niiden yhteydessä paremmin. Taulukosta 6.2.1. nähdään, että PNG on vahva kaikkien kuvien osalta. Se sisältää kaikki vaihtoehdot harmaasävystä täysväriin ja onnistuneella suodatinvalinnalla tiedostokoot on mahdollista saada pieniksi. Kehitystyön tuloksena on saatu hyvä formaatti, jonka vahvuudet ovat ilmaisuus, tiedon hukkamattomuus ja läpinäkyvyyden tuottamisessa kuvaan.

PNG:tä suositellaan ohjeissa [3, s. 169] käytettäväksi

Älä käytä PNG:tä

7.Yhteenveto

Riippumaton työryhmä on onnistunut hyvin kehittäessään korvaavaa formaattia patentoidulle GIFille. PNG on formaattina täyttänyt suunnittelun vaatimukset ja saanut ajan kuluessa lisäominaisuuksia. PNG:n voidaankin sanoa olevan ilmainen ja parannettu versio GIFistä. Sisarformaatti MNG:n avulla tulevat myös animaatio-ominaisuudet toteutetuksi.
Läpinäkyvyysoption ansiosta PNG-formaatti on vakiinnuttamassa paik-kaansa yhtenä kuvantallennuksen perusformaattina. Hyvän tulevaisuuden sille luo jatkuvasti kasvava ohjelmistotuki, joka laajentaa kayttömahdollisuuksia eri ohjelmissa. PNG:n jatkuva vapaa kehittäminen versioittain luo sille hyvät edellytykset pysyä kuvaformaattina, joka tulevaisuudessa sisältää monia kuvantallennuksen hyviä puolia.

Lähteet

[1] Boutell Thomas, Randers-Pehrson Glenn, "PNG Specification, Ver. 1.1", saatavana WWW-muodossa
<URL: http://www.libpng.org/pub/png/spec/png-1.2-pdg.html>,
14.7.1999.

[2] Roelofs Greg, "History of the PNG Format", saatavana WWW-muodossa
<URL: http://www.libpng.org/pub/png/pnghist.html>, January 1997.

[3] Webster Timothy, Web designer's guide to GRAPHICS: PNG, GIF & JPEG, Hayden Books, Indianapolis, Indiana, USA, 1997.

[4] Crocker Lee Daniel, PNG: The Portable Network Graphic Format,
DR Dobb's Journal, July, 1995 s. 36-44.

[5] Brown Kevin, "Cyclic Redundancy Checks", saatavana WWW-muodossa
<URL: http://www.seanet.com/ksbrown/kmath458.htm >, 12.10.2000.

[6] Ritter Terry, "The Great CRC Mystery", saatavana WWW-muodossa
<URL: http://www.io.com/ritter/ARTS/CRCMYST.HTM >,
Dr. Dobb's Journal of Software Tools, February 1986.

[7] van der Meulen Pieter S. , "IceAlpha", saatavana WWW-muodossa
<URL: http://www.libpng.org/pub/png/png-IceAlpha.html>, 4.5.2000.

[8] van der Meulen Pieter S. , "Horned Owl", saatavana WWW-muodossa
<URL: http://www.libpng.org/pub/png/png-OwlAlpha.html>, 4.5.2000.

[9] Roelofs Greg, "How PNG's Two-Dimensional Interlacing Works", saatavana WWW-muodossa
<URL: http://www.libpng.org/pub/png/pngpic2.html>, 4.5.2000.