Asiakirjan PNG-kuva (.png)
W3C-suositus StandardiPortable Network Graphics (PNG) on vapaasti käytettävä rasterigrafiikkatiedostomuoto, joka tukee häviötöntä tiedonpakkausta, indeksoituja värejä ja muuttuvaa alfakanavan läpinäkyvyyttä.
Muunna tiedostot muodosta PNG muotoon JPG
Ilmainen selaimessa toimiva muunnin, jolla voit muuntaa tiedostoja muodosta PNG muotoon JPG. Muunna tiedostot hetkessä laitteellasi.
Pakkaa PNG verkossa
Yksityisesti - tiedostot eivät koskaan poistu laitteeltasi
Tarkastele tiedostoa ja sen metatietoja
Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat PNG-tiedostot tarkistamalla tiedoston alun binäärisarjan:
Otsaketunniste tavutasolla (tunnistetavut)
Käyttöjärjestelmät ja tiedostoanalyysaattorit tunnistavat PNG-tiedostot tarkistamalla tiedoston alun binäärisarjan:
HEKSADEKSIMAALINEN TUNNISTE (SIJAINTI 0):
89 50 4E 47 0D 0A 1A 0AASCII-ESITYSTAPA: .PNG....
Standardointi: W3C-suositus (1996) / ISO/IEC 15948:2004
Tekniset tiedot
| Säiliöarkkitehtuuri | Lohkoihin perustuva binäärisäiliö, jonka jokaisen lohkon eheys tarkistetaan 4 tavun CRC32-summalla |
| Pakkaus | Deflate (LZ77 + Huffman-koodaus) viidellä ennustavalla rivisuodattimella (None, Sub, Up, Average, Paeth) |
| Tavujärjestys (Endianness) | Big-endian (verkkotavujärjestys) lohkojen pituuksille, mitoille ja CRC-tarkistussummille |
| Väriavaruudet | sRGB, Display P3, Indeksoitu paletti (1-8 bittiä), Harmaasävy, Täysväri (24/48-bittinen) |
| Kanavat ja rakenne | RGB + alfa (jopa 16 bittiä per kanava / 64-bittinen RGBA) |
| Suurimmat mitat | 2 147 483 647 x 2 147 483 647 pikseliä (4-bytiset etumerkittömät kokonaisluvut) |
| Läpinäkyvyys | Täysi 8-bittinen / 16-bittinen muuttuva alfaläpinäkyvyyskanava |
| Suoratoisto ja progressiivinen lataus | Adam7 7-vaiheinen lomitusalgoritmi mahdollistaa progressiivisen 2D-skannausrivien hahmonnuksen |
Tekninen vertailumatriisi: PNG vs. kilpailijat
| Tekninen attribuutti | PNG (Nykyinen) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| Pakkaustyyppi | Täysin häviötön (Deflate + 2D-ennustavat suodattimet) | Häviöllinen (VP8) ja häviötön (VP8L) | Häviöllinen (AV1 intra) ja häviötön | Puhdas häviöllinen (Diskreetti kosinimuunnos) |
| Alfaläpinäkyvyys | Täysi 8-bittinen / 16-bittinen muuttuva alfakanava | 8-bittinen alfakanava tuettu | 8-bittinen / 10-bittinen / 12-bittinen alfa tuettu | Ei läpinäkyvyyskanavan tukea |
| Tiedostokoko (Valokuvat) | Valokuvissa usein suurempi kuin häviöllisissä muodoissa; suhteellinen tiedostokoko vaihtelee kuvan ja koodaimen mukaan. | Voi olla JPEG:iä pienempi; tulos vaihtelee kuvan ja koodaimen mukaan. | Voi olla JPEG:iä pienempi; tulos vaihtelee kuvan ja koodaimen mukaan. | Keskisuuri perustaso |
| Tiedostokoko (Grafiikka/UI) | Erittäin kompakti kuvakaappauksille, viivataiteelle ja tekstille | Erinomainen häviötön tila | Hyvä, mutta hitaampi koodata | Heikko (tuottaa reunaheijastuksia terävien reunojen ympärille) |
| Selainyhteensopivuus | Suurimmat selaimet tukevat; saatavuus riippuu selaimesta ja sen versiosta. | Laaja tuki monissa nykyisissä selaimissa; kattavuus vaihtelee version ja alustan mukaan. | Monet nykyiset selaimet tukevat; kattavuus vaihtelee version ja alustan mukaan. | Laaja tuki; saatavuus vaihtelee tuotteen ja version mukaan. |
Yleiset vioittumistavat ja heksadesimaalinen palautusopas
Kuvankatseluohjelma näyttää virheen 'Fatal error: Not a valid PNG file' tai ei avaa tiedostoa.
Perussyy: ASCII-siirtotila on muuttanut ensimmäiset 8 tavua (merkit 0x0D 0x0A ovat muuttuneet muotoon 0x0A tai 0x0D 0x0D 0x0A).
Korjaus: Avaa tiedosto heksadesimaalieditorissa ja varmista, että ensimmäiset 8 tavua vastaavat arvoja '89 50 4E 47 0D 0A 1A 0A'. Näiden tarkkojen 8 otsikkotavun palauttaminen korjaa kuvan usein.
pngcheck raportoi 'CRC error in chunk IDAT' tai kuva latautuu osittain viallisilla alariveillä.
Perussyy: Bittivioittuminen pakatussa zlib-tietovirrassa tai virheellinen CRC32-tarkistussumma IDAT-lohkossa.
Korjaus: Käytä komentoa pngcheck -f tai Deflate-virran palautustyökaluja laskeaksesi kelvolliset CRC32-arvot uudelleen tai pura ehjät skannausrivit vialliseen lohkoon asti.
Kuva näkyy työpöytäkatselmissa oikein, mutta epäonnistuu iOS-sovelluksissa.
Perussyy: iOS odottaa Applen omaa CgBI-tavujärjestyksellä vaihdettua muotoa tai ei-standardeja väriavaruuslohkoja.
Korjaus: Normalisoi kuva komennolla 'pngcrush -revert-iphone-optimizations' palauttaaksesi standardin W3C RGBA-järjestyksen.
Tietoturva-analyysi ja tiedostojäsentimien hyökkäysvektorit
PNG:tä tukevat monet käyttöjärjestelmät ja sovellukset. Tietoturvariskeihin kuuluvat dekooderin muistin ehtyminen ja haitalliset lisälohkot.
Tunnetut hyökkäysvektorit
- Ylisuuret tEXt- ja zTXt-metatietolohkot, jotka laukaisevat muistin loppumisen (OOM) palvelunestohyökkäyksen hiekkalaatikkoon eristämättömissä purkajissa.
- Kekomuistin puskurin ylivuotohaavoittuvuudet vanhoissa libpng-julkaisuissa (esim. CVE-2015-8126 funktiossa png_set_PLTE).
- Pikselitulvapurkuhyökkäykset, joissa pienitiedostoinen kuva ilmoittaa valtavat mitat (esim. 100 000 x 100 000 pikseliä).
- Steganografinen tietovuoto, jossa salattuja hyötykuormia piilotetaan oheisiin yksityisiin lohkoihin (esim. eXIf tai mukautetut lohkotyypit).
Tietoturvan parhaat käytännöt: Validoi aina kuvan mitat ennen pikselipuskureiden varaamista muistiin. Poista ei-olennaiset oheislohkot (eXIf, tEXt) käyttäjän latauksista muistiturvallisella desinfiointityökalulla.
Historia ja virstanpylväät
Tärkeimmät edut
- PNG käyttää häviötöntä pakkausta, joten muuttumattoman kuvan koodaus ei aiheuta pakkaushäviötä; muokkaus tai värimuunnos voi silti muuttaa pikseliarvoja.
- Tasainen 8-bittinen alfakanavan läpinäkyvyys mahdollistaa siistin yhdistämisen monimutkaisiin taustoihin.
- Gammankorjaus- ja kromaattisuuslohkot varmistavat yhtenäisen hahmonnuksen eri näytöillä.
Tekniset rajoitukset
- Valokuvasisällön tiedostokoot ovat huomattavasti suurempia kuin moderneissa häviöllisissä muodoissa, kuten WebP:ssä tai AVIF:ssä.
- Ei natiivia moniruutuista animaatiota standardissa PNG:ssä (vaatii APNG-laajennuksen).
- Korkea bittisyvyys (16 bittiä per kanava) luo valtavia pakkaamattomia muistinsisäisiä purkupuskureita.
Mielenkiintoisia teknisiä faktoja
- 8-tavuinen tunniste suunniteltiin erityisesti FTP-siirtojen CR/LF-rivinvaihtovioitusten havaitsemiseen.
- PNG:n epävirallinen rekursiivinen akronyymi oli 'PNG's Not GIF'.
- Apple käyttää iOS-sovellusten PNG-tiedostoissa patentoitua CgBI-lohkoa, joka kääntää RGBA:n muotoon BGRA suoraan GPU-renderöintiä varten.
Usein kysytyt tekniset kysymykset
Miksi PNG-tiedoston koko joskus kasvaa, kun se tallennetaan kuvankatselu- tai muokkausohjelmassa?
Eri ohjelmistot käyttävät vaihtelevia Deflate-pakkaustasoja ja ennustavia rivisuodattimien heuristiikkoja. Ohjelmat kuten Photoshop lisäävät usein pakkaamattomia väriprofiileja, XMP-metatietolohkoja ja optimoimattomia IDAT-lohkojen kokoja. Erilliset työkalut, kuten File2File.app Compressor, arvioivat uudelleen kaikki 5 rivisuodatinta saavuttaakseen mahdollisimman pienen tiedostokoon.
Mitä eroa on PNG-8:lla ja PNG-24:llä?
PNG-8 käyttää jopa 256 värin indeksoitua väripalettia (samaan tapaan kuin GIF), mikä tuottaa erittäin pieniä tiedostoja, jotka sopivat yksinkertaisille kuvakkeille. PNG-24 tukee 16,7 miljoonaa väriä (Truecolor 8 bittiä per kanava), ja PNG-32 lisää 8-bittisen alfaläpinäkyvyyskanavan.
Miksi PNG:ssä on 5 ennustavaa rivisuodatinta?
Deflate pakkaa toistuvia tavukuvioita. Koska valokuvien tai liukuvärien pikseliarvot muuttuvat vähitellen, PNG suodattaa jokaisen skannausrivin (None, Sub, Up, Average, Paeth) laskemalla erot vierekkäisten pikselien välillä. Tämä muuntaa liukuväridatan lähes nollatavujen merkkijonoiksi, jotka pakkautuvat dramaattisesti paremmin Deflaten avulla.
Tukeeko PNG CMYK-väriavaruuksia kaupalliseen painatukseen?
Ei. Virallinen W3C PNG -spesifikaatio rajoittaa väritietotyypit tarkoituksella harmaasävyyn, indeksoituihin väreihin ja RGB:hen. Ammattimaiset painotyöt, jotka vaativat CMYK-värejä, edellyttävät TIFF- tai PDF-säiliöiden käyttöä.
Aiheeseen liittyvät PNG-muunnosparit
PNG-rasterikuvien muuntaminen JPEG-muotoon pienentää tiedostokokoa soveltamalla häviöllistä pakkausta, minkä ansiosta kuvat latautuvat verkkosivustoilla nopeammin ja vievät vähemmän tallennustilaa.
Häviöllisen JPEG-kuvan muuntaminen häviöttömäksi PNG-kuvaksi estää laadun heikkenemisen edelleen ja lisää tuen alfakanavan läpinäkyvyydelle.
PNG-kuvien muuntaminen WebP-muotoon voi pienentää tiedostokokoa ja säilyttää läpinäkyvyyden. Tulos riippuu häviöllisestä tai häviöttömästä koodauksesta ja kuvan sisällöstä.
WebP:n muuntaminen PNG:ksi tuottaa still-kuvan PNG:tä tukevaa ohjelmistoa varten. Animaatio ei säily, eikä muunnos palauta häviöllisessä lähdekuvassa menetettyjä yksityiskohtia.
HEIC-muodon muuntaminen PNG-muotoon muuttaa häviöllisellä HEVC-pakkauksella pakatut valokuvat laajasti tuetuiksi häviöttömiksi kuvatiedostoiksi.
SVG-vektoritiedostojen muuntaminen PNG-rasterikuviksi muuttaa skaalautuvat koodipohjaiset grafiikat kiinteiksi pikseliruudukoiksi yleisen sovellusyhteensopivuuden takaamiseksi.
Upota rasterimuotoiset PNG-kuvat SVG-XML-vektorisäiliöön responsiivista verkkoskaalausta ja vektoriyhteensopivaa asettelua varten.
Muunna Adobe Photoshop PSD -grafiikka häviöttömiksi PNG-kuviksi täydellisellä alfakanavan läpinäkyvyydellä suoraan verkkoselaimessasi ilman palvelintiedonsiirtoa.