Imagine PNG (.png)
W3C StandardPortable Network Graphics (PNG) este un format de fișier grafic raster fără restricții care acceptă compresie de date fără pierderi, culori indexate și transparență variabilă a canalului alfa.
Convertește din PNG în JPG
Convertor gratuit din PNG în JPG direct în browser. Convertește fișiere instantaneu pe dispozitivul tău.
Comprimă PNG online
Privat - fișierele nu părăsesc niciodată dispozitivul tău
Inspectare și metadate
Sistemele de operare și analizatoarele de fișiere identifică fișierele PNG prin inspectarea secvenței binare inițiale:
Semnătura antetului la nivel de octet (octeți magici)
Sistemele de operare și analizatoarele de fișiere identifică fișierele PNG prin inspectarea secvenței binare inițiale:
SEMNĂTURĂ HEXAZECIMALĂ (DECALAJ 0):
89 50 4E 47 0D 0A 1A 0AREPREZENTARE ASCII: .PNG....
Standardizare: W3C Recommendation (1996) / ISO/IEC 15948:2004
Specificații tehnice
| Arhitectură container | Container binar bazat pe segmente cu verificare CRC32 pe 4 octeți per segment |
| Compresie | Deflate (codificare LZ77 + Huffman) cu 5 filtre predictive de linii de scanare (None, Sub, Up, Average, Paeth) |
| Ordinea octeților | Big-Endian (ordinea octeților de rețea) pentru lungimile segmentelor, dimensiuni și CRC-uri |
| Spații de culoare | sRGB, Display P3, Paletă indexată (1-8 biți), Tonuri de gri, Culoare reală (24/48 de biți) |
| Canale și structură | RGB + Alpha (Până la 16 biți pe canal / RGBA pe 64 de biți) |
| Dimensiuni maxime | 2,147,483,647 x 2,147,483,647 pixeli (întregi fără semn pe 4 octeți) |
| Transparență | Canal de transparență alfa variabil complet pe 8 biți / 16 biți |
| Streaming și progresiv | Algoritmul de întrepătrundere Adam7 în 7 pași permite randarea progresivă 2D a liniilor de scanare |
Matrice de comparație tehnică: PNG vs. concurenți
| Atribut tehnic | PNG (Curent) | WebP | AVIF | JPEG |
|---|---|---|---|---|
| Tip de compresie | Strict fără pierderi (Deflate + filtre predictive 2D) | Cu pierderi (VP8) și fără pierderi (VP8L) | Cu pierderi (AV1 intra) și fără pierderi | Strict cu pierderi (transformare cosinusoidală discretă) |
| Transparență alfa | Canal alfa variabil complet pe 8 biți / 16 biți | Canal alfa pe 8 biți acceptat | Alfa acceptat pe 8 biți / 10 biți / 12 biți | Fără suport pentru canalul de transparență |
| Dimensiunea fișierului (fotografii) | Mare (de obicei de 3x până la 6x mai mare decât în cazul formatelor cu pierderi) | Mic (cu 25%-35% mai mic decât JPEG) | Ultra-mic (cu 40%-55% mai mic decât JPEG) | Bază medie |
| Dimensiunea fișierului (grafică/interfață utilizator) | Extrem de compact pentru capturi de ecran, desene liniare și text | Mod fără pierderi excelent | Bun, dar mai lent la codificare | Slab (produce artefacte de tip ringing de-a lungul marginilor ascuțite) |
| Compatibilitate cu browserul | 100% universal în toate browserele din 1998 | Suport de peste 97% în browserele moderne | Suport de peste 93% în browserele moderne | 100% universal |
Moduri comune de corupție și ghid de recuperare hexazecimală
Vizualizatorul de imagini afișează „Eroare fatală: Fișier PNG nevalid” sau nu reușește să se deschidă.
Cauză principală: Primii 8 octeți au fost modificați de un mod de transfer ASCII (transformând 0x0D 0x0A în 0x0A sau 0x0D 0x0D 0x0A).
Recuperare: Deschide fișierul într-un editor hexazecimal și verifică dacă primii 8 octeți corespund secvenței „89 50 4E 47 0D 0A 1A 0A”. Restaurarea exactă a acestor 8 octeți din antet recuperează frecvent imaginea.
pngcheck raportează „Eroare CRC în segmentul IDAT” sau imaginea se încarcă parțial cu liniile de scanare inferioare corupte.
Cauză principală: Corupție de biți în fluxul de date zlib comprimat sau sumă de control CRC32 nevalidă într-un segment IDAT.
Recuperare: Utilizează pngcheck -f sau utilitarele de recuperare a fluxului Deflate pentru a recalcula valorile CRC32 valide sau pentru a decomprima liniile de scanare intacte până la blocul corupt.
Imaginea se randează bine în vizualizatoarele desktop, dar eșuează în aplicațiile iOS.
Cauză principală: iOS se așteaptă la formatul CgBI proprietar al Apple, cu octeții reordonați, sau la segmente de spațiu de culoare nestandard.
Recuperare: Normalizează imaginea folosind „pngcrush -revert-iphone-optimizations" pentru a restaura ordinea standard W3C RGBA.
Analiză de securitate și vectori de atac asupra parserului
PNG este acceptat de multe sisteme de operare și aplicații. Riscurile de securitate includ epuizarea memoriei decodorului și blocuri auxiliare rău intenționate.
Vectori de atac cunoscuți
- Segmente de metadate tEXt și zTXt supradimensionate care declanșează atacuri de tip refuz al serviciului prin epuizarea memoriei (OOM) în decodoare fără sandbox.
- Vulnerabilități de depășire a bufferului de memorie heap în versiunile libpng vechi (de exemplu, CVE-2015-8126 în png_set_PLTE).
- Atacuri de decompresie prin inundație de pixeli în care o imagine cu dimensiune mică a fișierului declară dimensiuni enorme (de exemplu, 100.000 x 100.000 pixeli).
- Exfiltrare steganografică care ascunde sarcini utile criptate în segmente private auxiliare (de exemplu, eXIf sau tipuri de segmente personalizate).
Cele mai bune practici de securitate: Validează întotdeauna dimensiunile imaginii înainte de a aloca buffere de pixeli în memorie. Elimină segmentele auxiliare neesențiale (eXIf, tEXt) la încărcările utilizatorilor folosind un program de curățare cu gestionare sigură a memoriei.
Origini istorice și repere
Avantaje cheie și beneficii
- PNG folosește compresie fără pierderi, astfel că encodarea unei imagini nemodificate nu introduce pierderi de compresie; editarea sau conversia culorilor poate totuși schimba valorile pixelilor.
- Transparența alfa lină pe 8 biți permite o îmbinare curată pe fundaluri complexe.
- Corecția gamma și segmentele de cromatică asigură o randare consecventă pe diverse monitoare.
Limitări tehnice și dezavantaje
- Dimensiuni de fișiere semnificativ mai mari în comparație cu formatele moderne cu pierderi, cum ar fi WebP sau AVIF, pentru conținut fotografic.
- Fără animație nativă cu mai multe cadre în PNG standard (necesită extensia APNG).
- Adâncimea mare a biților (16 biți pe canal) creează buffere de decodare în memorie necomprimate uriașe.
Curiozități tehnice interesante
- Antetul magic de 8 octeți a fost conceput special pentru a detecta corupția de sfârșit de linie CR/LF cauzată de transferurile FTP.
- Acronimul recursiv neoficial pentru PNG a fost „PNG's Not GIF”.
- Apple utilizează un segment proprietar CgBI în fișierele PNG pentru aplicații iOS care inversează RGBA în BGRA pentru randare directă pe GPU.
Întrebări tehnice frecvente
De ce crește uneori dimensiunea unui fișier PNG când este salvat în editoarele de imagini?
Diferite pachete software utilizează niveluri diferite de compresie Deflate și heuristici de filtrare predictive a liniilor de scanare. Programe precum Photoshop adaugă frecvent profile de culoare necomprimate, blocuri de metadate XMP și dimensiuni neoptimizate ale segmentelor IDAT. Instrumente dedicate precum File2File.app Compressor reevaluează toate cele 5 filtre de scanare pentru a obține o dimensiune minimă a fișierului.
Care este diferența dintre PNG-8 și PNG-24?
PNG-8 utilizează o paletă de culori indexată de până la 256 de culori (similară cu GIF), producând fișiere foarte mici, potrivite pentru pictograme simple. PNG-24 acceptă 16,7 milioane de culori (culoare reală, 8 biți pe canal), iar PNG-32 adaugă un canal alfa de 8 biți pentru transparență.
De ce are PNG 5 filtre predictive pentru liniile de scanare?
Deflate comprimă modelele de octeți repetați. Deoarece valorile pixelilor fotografici sau ale degradeurilor se schimbă treptat, PNG filtrează fiecare linie de scanare (None, Sub, Up, Average, Paeth) prin calcularea diferențelor dintre pixelii adiacenți. Acest lucru transformă datele de degrade în șiruri de octeți a căror valoare este aproape zero, care se comprimă dramatic mai bine cu Deflate.
Acceptă PNG spațiile de culoare CMYK pentru tipărirea comercială?
Nu. Specificația oficială W3C PNG restricționează în mod deliberat tipurile de culori la tonuri de gri, culori indexate și RGB. Fluxurile de lucru de tipărire profesională care necesită CMYK trebuie să utilizeze containere TIFF sau PDF.
Perechi de conversie PNG conexe
Conversia imaginilor raster PNG în format JPEG reduce dimensiunea fișierului prin aplicarea unei compresii cu pierderi, ceea ce face ca imaginile să se încarce mai repede pe site-uri web și să utilizeze mai puțin spațiu de stocare.
Conversia unei imagini raster JPEG cu pierderi de date într-o imagine raster PNG fără pierderi previne degradarea suplimentară a imaginii și adaugă suport pentru transparența canalului alfa.
Conversia imaginilor PNG în WebP poate reduce dimensiunea fișierului păstrând transparența; rezultatul depinde de folosirea codificării cu sau fără pierderi și de conținutul imaginii.
Conversia din WebP în PNG creează o imagine statică pentru programele care acceptă PNG; animația WebP nu este păstrată, iar detaliile pierdute prin compresia sursei nu pot fi recuperate.
Conversia HEIC în PNG transformă fotografiile comprimate HEVC cu pierderi în fișiere grafice fără pierderi, larg acceptate.
Conversia fișierelor vectoriale SVG în imagini raster PNG transformă grafica scalabilă bazată pe cod în grile de pixeli fixe, pentru compatibilitate cu o gamă largă de aplicații.
Învelește imagini raster PNG într-un container vectorial SVG XML pentru scalare adaptabilă pe web și integrare în machete compatibile cu vectori.
Convertește grafica Adobe Photoshop PSD în imagini PNG fără pierderi, cu transparență completă pe canalul alfa, direct în browser și fără transmiterea fișierelor către server.