Slashdot Log In
Feature:The Story of PNG
from the stuff-to-see dept.
I hadn't intended to write anything up so soon, but lately there's been a lot of FUD and some general cluelessness about the Portable Network Graphics (PNG) image format, so here's an update from somebody who knows a tiny bit about it.
First of all, PNG is certainly not dead, although it obviously has not taken the Widely Webbed World completely by storm (which, in the eyes of the esteemed Mr. Veen, amounts to the same thing). For better or for worse, Netscape Navigator and Microsoft Internet Explorer pretty much define what counts as acceptable Web technology, and they only began supporting PNG natively in the autumn of 1997 (versions 4.04 and 4.0, respectively). As various Slashdotters have noted, neither one really supports PNG well yet, at least with respect to alpha transparency and gamma correction, but that's coming; let me return to that issue in a moment.
PNG has been making steady progress, however, particularly in non-Web applications. It has advanced from being a newsworthy ``extra'' to being an expected, standard component of image applications; in other words, a viewer or editor that ships without PNG support is considered deficient by both consumers and the trade press. That's a moderately subtle point--it doesn't necessarily leap right out at you and scream, PNG has arrived, dammit!, but it's nevertheless quite a significant milestone for any new technology. Mundane can be good. (By the way, I maintain the PNG home site and list known PNG-supporting applications of various persuasions on half a dozen pages; stop by if you're in need of something, and please let me know if I've missed any!)
But that's just one data point. Everybody's favorite technical publisher, O'Reilly and Associates, not only includes PNG chapters in a number of its books (including Web Design in a Nutshell and the soon-to-be-released Programming Web Graphics with Perl & GNU Software ), they also agreed to publish an entire 700-page book completely devoted to the Portable Network Graphics format: PNG: The Definitive Guide . It consists of around 300 pages of main text, 100 pages of program listings (both Unix/X and 32-bit Windows, under a BSDish license, freely downloadable soon), 250 pages of specifications, some fairly cool color figures, and assorted odds and ends; I happen to know because I wrote it. :-) (It just went into production on Monday, so it should hit the shelves in a few months, plug plug. I'll be updating the web page with dates and whatnot as soon as I find out myself.)
In addition, PNG has been published as an informational Internet RFC and a a W3C Recommendation (the very first one), and it's now wending its way through the slowly grinding gears of joint ISO/IEC standardization. That will all help ensure its longevity, but it's also fairly boring to most of you, I'm sure.
So getting back to the Web issue, let me briefly summarize PNG's basic capabilities:
- palette-based support (1, 2, 4, 8-bit), like GIF
- grayscale support (1, 2, 4, 8, 16-bit)
- truecolor support (24, 48-bit), like TIFF or (sort of) JPEG
- binary transparency, like GIF (except including grayscale and RGB modes, not just palette-based)
- alpha transparency (256 or 65536 levels of partial transparency), like TIFF
- alpha-palette transparency (that is, palette has RGBA entries, not just RGB), unlike anything else on the planet
- direct support for gamma correction and color correction
- lossless, unpatented compression
- 2D interlacing, somewhat like progressive JPEG
- no animation (but a closely related format called MNG)
The patent issue is largely history, except to shareware and freeware authors, for whom it's still quite real--Unisys lawyers continue their apparent crusade to kill all low-cost GIF-supporting software. What really matters to Web developers, however, is PNG's support for palette images (no, they don't all have to be really fat, 24-bit monsters); its support for alpha transparency even in palette images; its support for gamma and color correction; and the fact that its compression is lossless (which is why 24-bit PNG images are so fat, especially compared to lossy JPEG). In other words, for the same number of bytes as a binary-transparency GIF image, you can have a lovely alpha-palette PNG image that, thanks to gamma correction, will not look too light on Macs or too dark on PCs. The alpha support means it can be anti-aliased or drop-shadowed to look good against any background, not just a single, flat color. Note that MSIE 4.0 already supports gamma correction, and 5.0 is supposed to do full alpha transparency; we'll find out next month, I guess. Mozilla/Netscape 5.0 will also support both alpha and gamma, or else--I'm the nominal ``owner'' of Mozilla's PNG support, and now that the book is done, I intend to do some serious hacking. (Apologies for the 10-month delay!)
Since PNG pushes the envelope on a lot of image-related stuff--alpha transparency (no other Web formats), RGBA-palette images (no other format, period), gamma and color correction (almost no other formats), and even compression/filtering (it has a bunch of free parameters that one can tweak)--many of the current applications are somewhat behind in supporting some of the features. Be patient; things are steadily improving. I won't point fingers at any underperformers here, but I will note that the GIMP is quite strong in compression and 32-bit RGBA and should have fully working gamma code in the next release after 1.0.2; and Fireworks 1.0 is already partway there with RGBA-palette support and should be completely spiffy by version 2.1 or 3.0. (I didn't quite get my feedback in on time for it to affect the 2.0 release. If only they'd had a Linux version to try...)
I'm hopeful the book will help many of the others--it includes a lot of material aimed at helping programmers to improve their code, but also a lot of stuff to help users avoid problems and make the best of what options they've got. And if I have time while I'm working on Mozilla, I plan to release a free, automatic 32-bit to 8-bit (RGBA to RGBA-palette) converter to handle what seems to be the hardest PNG feature to support. Such conversion literally gives you a factor-of-four reduction in file size with essentially no visible loss (no more than normal RGB-to-palette conversion with nice dithering, anyway).
So...that, in a largish nutshell, is the past, present and future status of PNG. As for new competition, well, let's just say that there have been lots and lots and lots of fantastically improved, incredibly stupendous image formats that have come and gone over the years; ``WI'' is merely the latest, and SVG and JPEG2000/JPEG-LS are right around the corner. Anybody remember Johnson-Grace/AOL's ART format? How about Iterated Systems' fractal format (FIF)? Or some of the quadtree-based ones, or SPIHT, or FlashPix, or JPiG, or CMP, or ePIC, or HARC-C? Heck, even JPEG with arithmetic compression is considerably better than standard DCT-Huffman JPEG, but does anybody actually use it? No. Proprietary standards are simply not tolerated very well on the Web. Even free, open standards like PNG (with free, open-source, non-GPL'd reference libraries) have a huge barrier to climb. It took ``standard'' JPEG four years to catch on; it's taken PNG four years to catch on (yes, it's really been that long, and 2.5 years since the W3C Recommendation); and, barring largish miracles--e.g., Netscape and Microsoft cooperating--it will take any other new image format just as long.
There you have it. There's lots more info on the web site, and there are a couple of mailing lists for folks who really want to get gnarly with PNG. Oh, and please buy the book. ;-)
- Library Version Problems Resolved Yet? by Yarn (Score:1) Thursday March 18 1999, @06:09AM
- Re: The REAL story of PING by Gleef (Score:1) Thursday March 18 1999, @07:08AM
- Should have fought for the duck by Gleef (Score:1) Friday March 19 1999, @05:23AM
- PNG & Photoshop by Jordy (Score:1) Thursday March 18 1999, @06:42AM
- ART by volkris (Score:1) Thursday March 18 1999, @10:46AM
- IE5 does PNG and Anti-aliased fonts. by Craig (Score:1) Thursday March 18 1999, @11:08AM
- Windows does anti-aliased fonts. by jkovach (Score:1) Thursday March 18 1999, @03:37PM
- Just Another Agreeing Post by Phil Gregory (Score:1) Thursday March 18 1999, @04:24AM
- non portable tiff? by Phil Gregory (Score:1) Thursday March 18 1999, @05:13AM
- anti-aliased definition? by bhmit1 (Score:1) Thursday March 18 1999, @04:33AM
- anti-aliased definition? by bhmit1 (Score:1) Thursday March 18 1999, @05:32AM
- PNG and JAVA: Vote for it! by tjansen (Score:1) Thursday March 18 1999, @10:12AM
- PNG & Photoshop by an0n (Score:1) Thursday March 18 1999, @06:23AM
- Define lossy. GIF is not lossy. by ploeg (Score:1) Thursday March 18 1999, @02:10PM
- How I plan to use PNG by ragnar (Score:1) Thursday March 18 1999, @08:04AM
- How I plan to use PNG by moore (Score:1) Thursday March 18 1999, @08:50AM
- PNG and JAVA: Get it here: by Mithrandir (Score:1) Thursday March 18 1999, @01:14PM
- PNG and JAVA: Java Advanced Imaging API by Mithrandir (Score:1) Thursday March 18 1999, @02:33PM
- anti-aliased definition? by LetterJ (Score:1) Thursday March 18 1999, @04:53AM
- New here, have a question by LetterJ (Score:1) Thursday March 18 1999, @04:54AM
- New here, have a question by LetterJ (Score:1) Thursday March 18 1999, @05:17AM
- non portable tiff? by spitzak (Score:1) Thursday March 18 1999, @07:11PM
- Add Lossy Compression to PNG and It'll Be Great by spitzak (Score:1) Thursday March 18 1999, @07:15PM
- New here, have a question by Cave Newt (Score:1) Thursday March 18 1999, @08:06AM
- GIF's and JPG's on the PNG page... by Cave Newt (Score:1) Thursday March 18 1999, @01:30PM
- Drawing Kit for PNG??? by Cave Newt (Score:1) Thursday March 18 1999, @01:33PM
- ^^^ Good Question ! by Cave Newt (Score:1) Thursday March 18 1999, @01:41PM
- 16 bit by Cave Newt (Score:1) Thursday March 18 1999, @01:48PM
- NS4 does PNG and Anti-aliased fonts. by Cave Newt (Score:1) Thursday March 18 1999, @01:52PM
- PNG and JAVA: Java Advanced Imaging API by Cave Newt (Score:1) Thursday March 18 1999, @02:20PM
- Good examples of PNG alpha transparent images? by Cave Newt (Score:1) Thursday March 18 1999, @02:33PM
- Library Version Problems Resolved Yet? by Cave Newt (Score:1) Thursday March 18 1999, @02:37PM
- PNG & Photoshop by Cave Newt (Score:1) Thursday March 18 1999, @02:42PM
- Re: The REAL story of PING by Cave Newt (Score:1) Thursday March 18 1999, @03:20PM
- Big files? by Cave Newt (Score:1) Thursday March 18 1999, @03:27PM
- GIMP Support of PNG and Alpha Channel by Cave Newt (Score:1) Thursday March 18 1999, @03:39PM
- Get Opera and iCab to support it also by Cave Newt (Score:1) Thursday March 18 1999, @03:45PM
- Vector-based Art by Cave Newt (Score:1) Thursday March 18 1999, @03:50PM
- Why no PNG's on slashdot? by Grok (Score:1) Thursday March 18 1999, @06:01AM
- Great Original Content by dvdeug (Score:1) Thursday March 18 1999, @08:22AM
- Nyquist rate, subsampling, and the jaggies. by Mr Z (Score:1) Thursday March 18 1999, @05:50AM
- NS4 does PNG and Anti-aliased fonts. by careye (Score:1) Thursday March 18 1999, @09:37AM
- non portable tiff? by arwild01 (Score:1) Thursday March 18 1999, @05:46AM
- Ironicly... by kolla (Score:1) Thursday March 18 1999, @11:11AM
- Photoshop Export of PNGs by Evan Vetere (Score:1) Thursday March 18 1999, @06:33AM
- Re: Off topic. by Evan Vetere (Score:1) Thursday March 18 1999, @08:38AM
- How to use the best of both worlds by JavaTHut (Score:1) Thursday March 18 1999, @04:53PM
- Add Lossy Compression to PNG and It'll Be Great by Richard JC (Score:1) Thursday March 18 1999, @06:20AM
- Big files? by Artemisia (Score:1) Thursday March 18 1999, @11:36AM
- anti-aliasing by Christopher Thomas (Score:1) Thursday March 18 1999, @05:04AM
- PNG & Photoshop by domc (Score:1) Thursday March 18 1999, @08:39AM
- GIMP Support of PNG and Alpha Channel by Elik (Score:1) Thursday March 18 1999, @05:08AM
- anti-aliased definition? by N1KO (Score:1) Thursday March 18 1999, @04:57AM
- Big files? by BiGGO (Score:1) Thursday March 18 1999, @05:01AM
- Big files? by BiGGO (Score:1) Thursday March 18 1999, @05:55AM
- Drawing Kit for PNG??? by bob_shoggoth (Score:1) Thursday March 18 1999, @09:24AM
- Good examples of PNG alpha transparent images? by layne (Score:1) Thursday March 18 1999, @06:12AM
- anti-aliasing when resizing. by Ilmari (Score:1) Thursday March 18 1999, @07:07AM
- non portable tiff? by Otto (Score:1) Thursday March 18 1999, @07:16AM
- A kilobyte per pixel? by MikeTurk (Score:1) Thursday March 18 1999, @09:45AM
- no... i think you mean 200 bits by William Wallace (Score:1) Thursday March 18 1999, @09:15AM
- Is it worth it? by William Wallace (Score:1) Thursday March 18 1999, @09:29AM
- Off topic. by AJWM (Score:1) Thursday March 18 1999, @07:10AM
- Re: Off topic. by AJWM (Score:1) Thursday March 18 1999, @09:38AM
- Image formats by Beef (Score:1) Thursday March 18 1999, @04:18AM
- Image formats by Beef (Score:1) Thursday March 18 1999, @06:24AM
- Add Lossy Compression to PNG and It'll Be Great by Mr T (Score:1) Thursday March 18 1999, @06:21AM
- Why no PNG's on slashdot? by AT (Score:1) Thursday March 18 1999, @05:38AM
- Big files? by Cowards Anonymous (Score:1) Friday March 19 1999, @05:40PM
- Non web based usage by scrutty (Score:1) Thursday March 18 1999, @04:16AM
- PNG and JAVA by SuperKendall (Score:1) Thursday March 18 1999, @10:47AM
- A kilobyte per pixel? by Merk (Score:1) Thursday March 18 1999, @09:32AM
- Kudos on PNG by JEP (Score:1) Thursday March 18 1999, @04:21AM
- non portable tiff? by JEP (Score:1) Thursday March 18 1999, @05:15AM
- Big files? by JEP (Score:1) Thursday March 18 1999, @05:24AM
- Big files? by JEP (Score:1) Thursday March 18 1999, @05:43AM
- IE5 does PNG and Anti-aliased fonts. by JEP (Score:1) Thursday March 18 1999, @08:32AM
- Off topic. by JEP (Score:1) Thursday March 18 1999, @08:33AM
- non portable tiff? hrrmm by JEP (Score:1) Thursday March 18 1999, @08:43AM
- Non web based usage by Darlington (Score:1) Thursday March 18 1999, @04:39AM
- Big files? by dreamking (Score:1) Thursday March 18 1999, @05:59AM
- GIMP Support of PNG and Alpha Channel by Kenichiro (Score:1) Thursday March 18 1999, @05:32PM
- 48 replies beneath your current threshold.
