Portable Network Graphics is a raster graphics file format that supports lossless data compression. PNG was created as an improved, non-patented replacement for Graphics Interchange Format, PNG supports palette-based images, grayscale images, and full-color non-palette-based RGB/RGBA images. PNG was designed for transferring images on the Internet, not for professional-quality print graphics, a PNG file contains a single image in an extensible structure of chunks, encoding the basic pixels and other information such as textual comments and integrity checks. PNG files nearly always use file extension PNG or png and are assigned MIME media type image/png, PNG was approved for this use by the Internet Engineering Steering Group on 14 October 1996, and was published as an ISO/IEC standard in 2004. In this thread, Oliver Fromme, author of the popular DOS JPEG viewer QPEG, proposed the PING name, meaning PING is not GIF, although GIF allows for animation, it was decided that PNG should be a single-image format. In 2001, the developers of PNG published the Multiple-image Network Graphics format, MNG achieved moderate application support, but not enough among mainstream web browsers and no usage among web site designers or publishers. In 2008, certain Mozilla developers published the Animated Portable Network Graphics format with similar goals,1 October 1996, Version 1.0 of the PNG specification was released, and later appeared as RFC2083. It became a W3C Recommendation on 1 October 1996,31 December 1998, Version 1.1, with some small changes and the addition of three new chunks, was released. 11 August 1999, Version 1.2, adding one extra chunk, was released,10 November 2003, PNG became an International Standard. This version of PNG differs only slightly from version 1.2, the original PNG specification was authored by an ad-hoc group of computer graphics experts and enthusiasts. Discussions and decisions about the format were done exclusively via email, a chunk consists of four parts, length, chunk type/name, chunk data and CRC. The CRC is a network-byte-order CRC-32 computed over the type and chunk data. Chunk types are given a case sensitive ASCII type/name, compare FourCC. The case of the different letters in the name is a bit field that provides the decoder with some information on the nature of chunks it does not recognize, the case of the first letter indicates whether the chunk is critical or not. If the first letter is uppercase, the chunk is critical, if not, critical chunks contain information that is necessary to read the file. If a decoder encounters a critical chunk it does not recognize, the case of the second letter indicates whether the chunk is public or private. Uppercase is public and lowercase is private and this ensures that public and private chunk names can never conflict with each other. The third letter must be uppercase to conform to the PNG specification and it is reserved for future expansion
Example with several types of image content
Representation of bit cost per pixel for above PNG file (red=expensive,blue=cheap)
Composite image comparing lossy compression in JPEG with lossless compression in PNG: the JPEG artifacts are easily visible in the background of this kind of image data, where the PNG image has solid color.