PNG
(Minor cleanup, reorganization, etc.) |
(→Identification) |
||
Line 19: | Line 19: | ||
== Identification == | == Identification == | ||
A file begins with an 8-byte signature: {{magic|89 50 4E 47 0D 0A 1A 0A}}. | A file begins with an 8-byte signature: {{magic|89 50 4E 47 0D 0A 1A 0A}}. | ||
+ | |||
+ | A standard PNG file also has ASCII "{{magic|IHDR}}" at offset 12. You can check for this to distinguish it from [[CgBI]]. | ||
== Extensions == | == Extensions == |
Revision as of 14:41, 14 December 2017
Portable Network Graphics (PNG) was devised starting in a discussion on newsgroup comp.graphics in 1995, with the first version of its specification released in 1996. The motivation for its creation was to create a free and unencumbered image format in the wake of the patent issue with GIF.
PNG has become a very popular graphic format, but widespread adoption on the Web was slow due to the fact that the first specification came out over a year after the Web had begun to be popular with the general public, meaning that there were many sites and browsers out there not using and supporting the new format; subsequently, browsers began to support it, but often had rendering problems which persisted even in fairly late versions years later; this caused webmasters to be slow to switch from GIF to PNG, though many eventually did so. Since the LZW patent that affected GIF is expired now, the "free format" motivation for the switch no longer applies.
Unlike GIF, PNG officially supports only still graphics, not animation. However APNG, an unofficial extension of the PNG image format that retains the .png file extention does support animation. Another related format, MNG, officially does support animation.
Contents |
Format details
A PNG file consists of an 8-byte signature, followed by a sequence of chunks. Each chunk has an 8-byte header containing a 4-byte chunk length, and a 4-byte chunk type code. Each chunk also has a 4-byte trailer containing a checksum.
Identification
A file begins with an 8-byte signature: 89 50 4E 47 0D 0A 1A 0A
.
A standard PNG file also has ASCII "IHDR
" at offset 12. You can check for this to distinguish it from CgBI.
Extensions
Extensions by chunk type
Chunk type | References and remarks |
---|---|
oFFs , pCAL , sCAL , gIFg , gIFx , gIFt , fRAc |
Refer to Extensions to the PNG 1.2 Specification, v1.2.0. |
sTER |
Refer to Extensions to the PNG 1.2 Specification, v1.3.0. |
dSIG |
Refer to Extensions to the PNG 1.2 Specification, v1.4.0, and the PNG dSIG website. |
acTL , fcTL , fdAT |
Used in APNG files. |
vpAg |
Used by ImageMagick. |
CgBI |
Refer to CgBI. |
eXIf |
Exif metadata. Refer to PNG Proposed eXIf chunk [approved 2017-07]. |
Other extensions
- XMP metadata can be stored in an
iTXt
chunk with keyword "XML:com.adobe.xmp". Refer to the XMP Specification, Part 3.
Related Formats
- APNG
- MNG
- JNG
- CgBI
- Portable Bitmap Format
- zlib-style DEFLATE compression: Used to compress image and other data.
- CRC-32: Used to calculate a checksum of each chunk.
- ICC profile: The format used by iCCP chunks.
Specifications
- W3C PNG specification (latest version)
- Specific versions: 1996-10-01 · 2003-05-20 · 2003-11-10
- RFC 2083: PNG Specification Version 1.0
- ISO/IEC 15948:2004 (not free to download)
Metaformat files
- Synalysis grammar file (for Hexinator / Synalize It!; more details)
Software
Support for PNG is ubiquitous. Software listed here may have been selected arbitrarily.