The PNG specification was first issued as a W3C Recommendation on 1st October, 1996 (press release) and updated to a second edition incorporating all errata on 10 November 2003. This edition is also an ISO standard, ISO/IEC 15948:2003 (E).
This means it is a mature document that is considered to contribute towards realising the full potential of the Web. Viewers for PNG are available on many platforms; there are an increasing number of content creation tools available; and thus modern browsers implement support for it also.
Stability: excellent * * * * *
The PNG specification has proven to be exceptionally solid. There have been two minor updates since the 1.0 release–to clarify gamma handling and to add some new chunk types for precision color and international text–but the design of PNG is such that these additions do not prevent older apps from displaying images that contain the new chunks. In addition, PNG finally emerged from the amazingly slow process of ISO/IEC standardization in March 2004, which assures its long-term stability as an image format. It is also a required part of both VRML97/X3D and the vector-based image standard, SVG.
User acceptance: very good to excellent * * * *
Among those who are familiar with PNG, acceptance is excellent, and the most recent Unisys flap (late August 1999) further increased the level of awareness of PNG. While there are still many people who are barely aware of the difference between GIF and JPEG, much less who have heard of PNG, the number of non-PNG-Group folks who regularly post useful and accurate information about PNG (e.g., to Usenet newsgroups and mailing lists) is impressively high. In addition, application support is no longer considered extraordinary but rather is expected. Indeed, applications that do not support PNG are criticized both by users and by the trade press. And in 1999, technical publisher O’Reilly and Associates felt the market was ready for a book devoted entirely to the subject; PNG: The Definitive Guide was published in June 1999. (It turned out to be too narrow a topic to sell well and went out of print in late 2001, but it was relicensed under the GNU FDL, and the full text has been online since July 2003.)
Application support (quantity): excellent * * * * *
Virtually all graphics-related applications these days are at least able to read or write basic PNG images, and many can do both. See the PNG-supporting applications pages and freshmeat.net for details; several “new” apps are announced, discovered and/or listed every week.
Application support (quality): good * * *
The quality of PNG support in applications varies widely, but overall it is improving at a reasonable rate. Many applications now support both basic GIF-like transparency (palette-based with a single, fully transparent color index) and full alpha transparency (32-bit RGBA); a handful also support PNG’s “RGBA palette” mode (8-bit with a multi-entry tRNS chunk). A number of high-end applications now support 16-bit color channels in PNG. Support for gamma correction continues to be uneven, with many applications failing to honor the gamma information when reading images, and most of them not making a distinction between recording gamma-related information about the user’s display (lossless) and modifying the image data directly (lossy). Compression support is also uneven, with a surprisingly large number of applications writing overly large palettes, misusing PNG’s compression filters, and often providing no way of setting the maximum possible compression level.
Among PNG-supporting image editors, Macromedia’s Fireworks 2.0 and later, available for Windows and Macintosh, remains the best overall, with excellent support for PNG transparency, good compression, and support for text annotations. The GIMP, available primarily for Unix systems but now also for Windows, has reasonable alpha support, good gamma and text support, and excellent compression. Adobe’s Photoshop, considered by many to be the preeminent image-editing application, is slowly improving but still is not at the level one might expect given its price tag. PS 7.0 fixes all known PNG bugs in previous versions, but its compression remains poor (reportedly), it cannot write 16-bit color channels (in PNG images, that is), and it has no support at all for RGBA palettes or text annotations. (It also silently “flattens” color data in areas where the image’s alpha channel indicates complete transparency, which is a lossy operation and which may surprise users who expected truly lossless storage. Adobe does not consider this a bug.)
Browser support: very good to excellent * * * *
Web-browser support for PNG–or the incomplete implementation thereof–was, for more than a decade, a major thorn in the side of PNG developers and web designers who wanted to use PNG. While most browsers supported PNG images natively since the late 1990s–the “Big Two” (Netscape and Internet Explorer) having finally caught up in late 1997 (early 2000 for MSIE on the Macintosh)–the level of support was downright pathetic until 2001 or so and didn’t achieve “ubiquitous goodness” until late 2006. Users want alpha transparency, which allows one to do nifty effects like drop-shadows and anti-aliasing against any background, but users of the now-dominant web browser, MSIE for Windows, were locked in the dark ages of GIF-style binary transparency until the release of MSIE 7.0 in October 2006. (Previous versions implemented PNG transparency in such a way that any palette index that wasn’t completely opaque was treated as completely transparent–depending on your image, say goodbye to most of it! To make up for that, MSIE for Windows didn’t support 32-bit RGBA transparency at all.) And even the newest version still has multiple bugs in its gamma support (screenshots).
Meanwhile, most other browsers–including Microsoft’s now-defunct MSIE 5 for Macintosh (screenshots)–have had excellent PNG support for years. (MSIE/Mac’s only real downsides from the PNG perspective were that (1) the Mac development team and code base apparently were largely independent of the Windows side, and (2) they were disbanded entirely since the release of Apple’s KHTML-based Safari browser, with the obvious corollary that there will never be any more updates.) However, both Safari and another Mac browser, iCab, also have excellent transparency support (though no gamma support in the latter), as do NetPositive for BeOS, OmniWeb for Mac OS X Server, the Sega Dreamcast browser, and the CSCMail e-mail client for Linux. Netscape’s Navigator 6 and later (plus Mozilla, its open-source code base, and derivatives such as Firefox, Galeon and K-Meleon) has had very good transparency support since April 2000, with the exception of 8- and 16-bit X on Unix (mediocre quality); it also has full gamma support and even, for a brief period, native MNG support. (Navigator 4.x had no transparency support whatsoever, but virtually all users have since upgraded to one of the Mozilla-based releases.) Recent releases of Dillo for Linux and Opera for Windows and Linux and are likewise fully capable of both transparency and gamma correction (though Dillo doesn’t yet handle background images). Konqueror 3, KDE’s native browser, has full 32-bit RGBA support but, at least through version 3.2.2, only binary transparency support for palette-based images. (Like older versions of Mozilla, it supports MNG natively.) WebTV does both gamma and transparency reasonably well, although versions before July 2000 had serious problems with palette-based transparency; there’s also a WebTV Viewer test browser for Windows that has excellent PNG support. The W3C’s Amaya browser was provided with a patch against version 2.1, which was supposed to give the Windows port some level of alpha support, but there’s no mention of it in the new-features list for versions released since then. And Webster XL for RISC OS and the ICE Browser for Java are both supposed to have full transparency support, although these claims have not been verified.
On the less lively side, the nearly defunct Acorn Browse for RISC OS had full, flawless support for all forms of PNG transparency, not to mention gamma-correction and progressive display of interlaced PNGs. The fully defunct Arena also had decent alpha support, though it always used its own background pattern.
What will it take to move the Browsers rating firmly into the “Excellent” category? Leaving aside the issue of Windows users’ migration to browsers with good PNG support (e.g., Firefox, MSIE 7, or Opera)–which may take another year or two–Microsoft needs to fix MSIE’s broken gamma support; Mozilla/Firefox still lead in this regard. (And while Microsoft is at it, how about color correction? This falls into the “put up or shut up” category, since Microsoft was a founding member of the International Color Consortium more than a decade ago, before PNG even existed. See the screenshots page for details and links to test pages.) Beyond that, it would be nice to see some of the other actively developed browsers like Amaya (and Konqueror?) learn how to do all forms of PNG transparency correctly; that goes for most of the embedded browsers, like ANT Fresco and ViewML, as well.
As a related item, note that Microsoft’s Internet Information Server (a.k.a. IIS) shipped by default without an explicit MIME type for PNG images until version 6, which effectively meant that it treated PNGs as application/octet-stream rather than image/png. Not surprisingly, this affected only non-Microsoft web browsers connecting to IIS servers; they rightly refused to display such mislabelled PNGs. Fortunately, Microsoft did finally correct the problem with the release of IIS 6.0 in 2003, and a fix is available for older versions (at least for version 4.0).
See the Browsers page for more info, including links to screenshots for many of the products mentioned above.
Animation support: poor to fair *
Animation and other forms of multi-image storage were intentionally excluded from the PNG specification; at the time (early 1995), animated GIFs were almost unheard of, MPEG was well established in the video realm, and the PNG Group felt (and still feels) that multi-image applications would be better served by a PNG-like meta-format. MNG, short for Multiple-image Network Graphics, is precisely that format. It uses exactly the same chunk architecture as PNG and actually shares many of the same chunks, but it supports looping, objects, and JPEG image data, among other things. See the MNG web site for details.
Prior to mid-1999, animation support was rather abysmal. But with the freezing of the MNG spec in May 1999 and the continued development of several MNG-supporting applications (e.g., ImageMagick, MNGeye, eMNGma, and PNG/MNG Construction Set Pro) since then, the rating has moved up a notch. In February 2001, Gerard Juyn’s free libmng achieved 1.0 status, and it is (or was) being used not only in a pair of browser plug-ins, a couple of Java applets, and in the Qt GUI toolkit, but also in Mozilla, Navigator 6 and later, Konqueror 3, and NetFront 3 and later. Unfortunately, MNG support was subsequently removed from Mozilla and its relatives (except as a separate “XPI” add-on), and MNGeye and eMNGma are no longer being developed, so the rating has moved back down a notch.
More apps and better browser support will be necessary in order to move beyond “fair” status. Currently more than four dozen are listed, a number that continues to increase slowly but steadily.