PNG
|
Template:Alternateuses PNG (Portable Network Graphics), sometimes pronounced as "ping" ( in IPA), is a lossless bitmap image format that is popular on the World Wide Web and elsewhere. PNG was largely developed to deal with some of the shortcomings of the GIF format and allows storage of images with greater color depth and other important information.
PNG is supported by the libpng reference library, a platform independent library that contains C functions for handling PNG images.
Contents |
History and development
The motivation for creating the PNG format came in early 1995, after Unisys announced that it would be enforcing software patents on the LZW data compression algorithm used for GIF. The algorithm is described in U.S. Patent 4,558,302 and other patents around the world. There were also other problems with the GIF format which made a replacement desirable, notably its limitation to 256 colours at a time when computers capable of displaying far more than 256 colours were becoming common. Although GIF allows for animation, it was decided that PNG should be a single-image format. A companion format called MNG has been defined for animation. PNG gained some additional popularity in August 1999, after Unisys terminated its royalty-free patent licenses to developers of free software and non-commercial software.
- Version 1.0 of the PNG specification was released on July 1 1996, and later appeared as RFC 2083. It became a W3C Recommendation on October 1 1996.
- Version 1.1, with some small changes and the addition of three new chunks, was released on December 31 1998.
- Version 1.2, adding one extra chunk, was released on August 11 1999.
- PNG is now an International Standard (ISO/IEC 15948:2003), also released as a W3C Recommendation on November 10 2003. This version of PNG differs only slightly from version 1.2 and adds no new chunks.
Technical details
PNG_transparency_demonstration_1.png
(demonstration image 1)
Missing image
PNG_transparency_demonstration_2.png
(demonstration image 2)
PNG uses a non-patented lossless data compression method known as deflation. This method is combined with prediction, where for each image line, a filter method is chosen that predicts the colour of each pixel based on the colours of previous pixels and subtracts the predicted colour of the pixel from the actual color. An image line filtered in this way is often more compressible than the raw image line would be. On most images, PNG can achieve greater compression than GIF, but some implementations make poor choices of filter methods and therefore produce unnecessarily large PNG files.
The GIF file format has allowed portions of images to be transparent, allowing them to appear to have a shape that is not rectangular. However, the GIF method was considered to be insufficient because it only allowed individual pixels to be fully transparent or fully opaque. The PNG format allows three different styles of transparency: one for indexed color images and two for greyscale or truecolor images. For indexed color images a table of 8 bit alpha values (numeric values representing levels of partial transparency from fully transparent to fully opaque) for palette entries is stored. If this table is smaller than the number of palette entries the remaining entries are considered to be fully opaque. For greyscale and truecolour images either a single colour value can be set as transparent or an alpha channel of the same bitdepth as the main channels can be added to the image. It should be noted that an alpha channel cannot be used with a 1 2 or 4 bit greyscale image though such an image could be stored in a png by defining it as palletted and putting the alpha values into the palette.
Other image attributes that can be stored in PNG files include gamma values, background color, and textual information. The standard allows up to 16 bits per channel, though for most people, 8 bits per channel is usually enough. It should be noted that although PNG is designed in terms of bitdepth per channel people and image editing software usually talk about the total bits per pixel. So for example a 16 bit per channel RGBA image would have a total of 64 bits per pixel. PNG also supports color correction with the use of color management systems like sRGB.
bitdepth per channel | 1 | 2 | 4 | 8 | 16 |
indexed | 1 | 2 | 4 | 8 | |
greyscale | 1 | 2 | 4 | 8 | 16 |
greyscale with alpha | 16 | 32 | |||
truecolour (RGB) | 24 | 48 | |||
truecolour with alpha (RGBA) | 32 | 64 |
The table on the right shows the full range of color options: The green cells with numbers represent the supported formats, The numbers inside the total bits per pixel. The red cells represent unsupported combinations. The standard requires decoders can read all supported color formats but many image editors can only produce a small subset of them.
A PNG file consists of an 8-byte signature (89 50 4E 47 0D 0A 1A 0A in hexadecimal) followed by a number of chunks, each of which conveys certain information about the image. Chunks declare themselves as critical or ancillary, and a program encountering an ancillary chunk that it does not understand can safely ignore it. This chunk-based structure is designed to allow the PNG format to be extended while maintaining compatibility with older versions.
The MIME media type for PNG is image/png
(approved on October 14 1996).
Support and usage
After the introduction of the PNG format, it took a long time for web browsers to fully support alpha channel transparency. Binary transparency is still more widely supported than alpha channel transparency as of 2005. For example, Microsoft Internet Explorer (for Windows) supports binary transparency but not alpha channel transparency. Version 7 of the browser, however, will finally support this missing feature [1] (http://blogs.msdn.com/ie/archive/2005/04/22/410963.aspx). Also in some versions of some web browsers assume some gamma correction values even when none are specified in the PNG. The images thus appear differently under different operating systems.
PNG is rapidly replacing GIF for still images, mostly on web sites of computer enthusiasts protesting Unisys's license policies and on some cartoon sites that take advantage of PNG's tighter compression to save on Internet bandwidth charges.
The web graphics package Macromedia Fireworks uses PNG as its native file format, but uses private ancillary chunks to store Fireworks-specific data, such as information about layers, frames (animation), text, and effects (allowing later re-editing). These PNG files have been reported to crash Internet Explorer 4.x and so PNGs for web-page display should be 'exported' from Fireworks, rather than just saved. [2] (http://www.macromedia.com/cfusion/knowledgebase/index.cfm?id=tn_13871)
Alternatives
In late 2004, an animation extension (APNG) was proposed which, while retaining the ability to render the first frame as a normal PNG in decoders that do not understand the APNG format, also contains additional chunks which allow it to act as an animated image similar to a GIF file in a decoder which does understand the extension. [3] (http://www.vlad1.com/~vladimir/projects/apng/)
See also
- Computer graphics
- Adam7 algorithm
- APNG
- GIF
- JNG
- JPEG
- MNG
- TIFF
- Truevision TGA
- Comparison of layout engines (graphics)
External links
libpng.org
- PNG Home Site (http://www.libpng.org/pub/png/)
- libpng Home Page (http://www.libpng.org/pub/png/libpng.html)
- PNG-supporting browsers (http://www.libpng.org/pub/png/pngapbr.html) - overview of PNG status in different web browsers. First Windows IE support in 4.0b1; Netscape 4.04 [4] (http://oregon.usgs.gov/png_images.html).
- The Story of PNG by Greg Roelofs (http://www.libpng.org/pub/png/slashpng-1999.html)
W3C
- PNG Specification (Second Edition), W3C Recommendation 10 November 2003 (http://www.w3.org/TR/2003/REC-PNG-20031110/)
- Test inline PNG images (http://www.w3.org/Graphics/PNG/Inline-img.html)
Others
- RFC 2083
- PNG transparency test (http://entropymine.com/jason/testbed/pngtrans/)
- Transparent PNG Generator (http://apps.everamber.com/alpha/)
- The GD-library to generate dynamic PNG-files with PHP (http://php.net/gd)
- A guide to PNG optimization (http://www.cs.toronto.edu/~cosmin/pngtech/optipng.html)
- PNG as a future proof format (http://en.wikibooks.org/wiki/How_to_future_proof_electronic_information#Images_.26_Photos_.28Raster_Graphics.29)
- PNG Adam7 interlacing (http://schaik.com/png/adam7.html)
Browser incompatibilities
- PNG Files Do Not Show Transparency in Internet Explorer (http://support.microsoft.com/default.aspx?scid=kb;en-us;294714)
- The PNG problem in Windows Internet Explorer (http://homepage.ntlworld.com/bobosola/)
- png transparency in IE (http://www.nrkn.com/alpha/)ca:PNG
da:Portable Network Graphics de:Portable Network Graphics es:PNG fr:Portable Network Graphics ko:PNG it:Portable Network Graphics hu:PNG nl:Portable Network Graphic ja:Portable Network Graphics no:PNG pl:PNG pt:PNG ru:PNG sl:PNG fi:PNG sv:PNG zh:PNG