Indeed, PNG: The Definitive Guide is for real;
Greg received his first copy on 24 June 1999.
The book is 344 pages (352 if you count the catalog info in the back), plus
four pages of really cool color plates, and the publisher is
O'Reilly and Associates.
(The cover animal originally was to be a "pnguin," but Tim O'Reilly
declared that they're reserved for Linux books. Argh, so close...)
The book is divided into three main parts and is targetted at both designers
and programmers. Part I, Using PNG, consists of six chapters and
covers the main categories of PNG-supporting applications: image editors,
viewers, converters, web browsers and servers, and 3D apps. Chapter 1 also
provides a basic overview of image types and properties.
Part II, The Design of PNG, also consists of six chapters and looks
in more detail at PNG as a file format. It covers not only PNG's fundamental
chunk structure and compression technology but also its history, its animated
cousin MNG, and some of the intricacies of cross-platform gamma and color
correction.
Part III, Programming with PNG (four chapters), steps the reader
through the design of three functional demo programs based on the free libpng
C library: rpng, a very simple PNG viewer; rpng2, a progressive
PNG viewer such as might be found in a web browser; and wpng, a basic
program to convert RGB image data from binary PBMPLUS / NetPBM format into
PNG format. The final chapter in this section lists a number of other
PNG-supporting programming toolkits for various languages, including C, C++,
Java, Perl, Python, tcl/tk, and Visual Basic.
Here's a quick directory to more detailed information on
PNG: The Definitive Guide:
Though PNG: The Definitive Guide is the only book devoted
solely to PNG (to Greg's knowledge, anyway), a number of other books
cover it in one or more chapters. Here are some of them.
Salomon added a four-page section on PNG in the third edition of his
900-page overview of compression techniques. The author's web site
includes an additional 200 pages of freely downloadable auxiliary
material (appendices) that were removed from this edition, as well as
some other add-ons.
This is a more academically oriented collection that covers lossless
compression techniques from "generic data" to images to audio. Greg
wrote the chapter on PNG image compression; it goes into considerably
more technical detail than does the corresponding chapter in PNG:
TDG.
As the title suggests, the focus of Schmitt's book is on Cascading
Style Sheets. However, the author also covers a number of image formats,
including PNG and SVG in one chapter.
Miano's book is oriented toward programmers who want to write not only
programs that support various image formats but also the underlying
image decoders. His PNG codec is one of the few independent
implementations outside of libpng; C++ source code is available from
the book's web page.
Knudsen's book is a higher-level programming text that covers numerous
image-related concepts supported by the Java 2D API. Chapter 11 includes
a section on how to write a PNG decoder.
Wallace's book is also a higher-level programming guide; while it does
include a simple Perl module that can parse and check the CRCs of PNG
chunks, it is primarily geared toward the use of existing libraries
(such as libpng, zlib and ImageMagick) from various scripting languages,
especially in the context of CGI (server-based) programming. This is
basically the second edition of
Programming Web Graphics with Perl and GNU Software
(February 1999).
Niederst's book lies on the other end of the spectrum; her PNG chapter
is oriented toward web designers who want to know the basic features
of PNG and a few of the browsers and applications that support it.
The second edition, published in 2001, contains updated PNG information.
(Jennifer is also the person who put Greg up to writing PNG:
TDG.)
This 1100-page tome is a classic. Its PNG section is a good, readable
summary of the main points of version 1.0 of the PNG specification,
including one or two paragraphs on each of the PNG chunks that were
defined at the time. In addition, both the spec and a (very old) version
of libpng are included on the accompanying CD-ROM.
Rimmer's book includes a CD-ROM with 16-bit and 32-bit Windows DLLs (and
presumably OS/2 DLLs as well) for a number of image formats, including
PNG. It is reported to work fine with Delphi, at least as of mid-1998.
(This is the second edition; the first appears to have been published
in January 1993--two years before PNG existed--with the title,
Windows Bitmapped Graphics.)