By golly, a whole book devoted to PNG!
Indeed, PNG: The Definitive Guide is for real; it went into production on 22 February 1999, Greg finished responding to copyedits on 2 April, and after a couple of rounds of ``quality checking,'' it will head to the printer in late May or early June. The book will be 344 pages (including 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...)
Those who have checked this page previously may have noticed some oddities with the page count. The original plan was to include all five PNG-related specs (PNG, PNG extensions, MNG, zlib, deflate) as appendices, as well as full (printed) source code to the demo programs. That rang in at somewhere between 710 and 740 pages, which was judged impractical due to cost. The next plan was to print only the PNG and PNG extensions documents as appendices (about 475 pages) and include a CD-ROM. But despite Greg's best efforts (and despite the word ``Definitive'' in the title), inclusion of any specifications was vetoed. (For what it's worth, HTML: The Definitive Guide doesn't include the HTML 4.0 spec, either.)
The CD-ROM would still have been possible, but based on a mini-survey conducted within the PNG Group, most people would just as soon download specs, source code, software and images from the Internet; CD-ROMs are generally not used very much and add an annoying stiffness to the back cover of books. Also, Greg would have liked to have made it a truly useful and complete CD-ROM; among other things, it would have been nice to include a multi-platform web browser with really good PNG support. Since such browsers don't exist yet, Greg decided to hold off with any CD-ROM until a (possible) later edition, and then only if there seems to be demand for it.
For now this page includes only the book's outline and a link to the O'Reilly page.
The complete source code to the three demo programs (all of which work under
both Unix and 32-bit Windows and may be modified and reused freely under a
BSD-like license) will show up here soon, too.
(The following outline will be converted to a bulleted list shortly.)
Preface
- About This Book
- Part I, Using PNG
- Part II, Design of PNG
- Part III, Programming with PNG
- Conventions Used in This Book
- How to Contact Us
- Acknowledgments
Part I: Using PNG
Chapter 1: An Introduction to PNG
- Overview of Image Properties
- What is PNG Good For?
- Alpha Channels
- Gamma and Color Correction
- Interlacing and Progressive Display
- Compression
- Compression Filters
- Compression Oopers
- Summary of Usage
- Case Study of a PNG-Supporting Image Editor
- PNG Feature Support in Fireworks
- Invoking PNG Features in Fireworks
- Analysis of Fireworks PNG Support
- Concluding Thoughts on Fireworks
Chapter 2: Applications: WWW Browsers and Servers
- WWW Browsers
- Netscape Navigator
- Microsoft Internet Explorer
- Opera
- Acorn Browse
- Arena
- Amaya
- Other Browsers
- Amiga
- Acorn
- BeOS
- Macintosh
- NeXTStep / OpenStep
- OS/2
- Client-side Work-Arounds: the OBJECT Tag
- WWW Servers
- ``Standard'' Servers
- Internet Information Server
- Server-side Work-Arounds: Content Negotiation
- Apache variants files
- Apache MultiViews
Chapter 3: Applications: Image Viewers
- Windows 95/98/NT
- Windows 3.x
- VMS
- Unix
- OS/2
- Macintosh
- Java
- DOS
- BeOS
- Atari
- Amiga
- Acorn RISC OS
Chapter 4: Applications: Image Editors
- Photoshop 5
- Photoshop 4
- ImageReady
- Paint Shop Pro
- The Gimp
- Other Image Editors
Chapter 5: Applications: Image Converters
- pngcrush
- pnmtopng
- gif2png
- Tiff2png
- pngcheck
- Other Conversion Programs
Chapter 6: Applications: VRML Browsers and Other 3D Apps
- Cosmo Player
- WorldView / MSVRML
- blaxxun Contact
- Viscape Universal
- LibVRML97 / Lookat
- FreeWRL
- VRMLView
- Other VRML Browsers
- Other 3D Applications
Part II: The Design of PNG
Chapter 7: History of the Portable Network Graphics Format
- Anatomy of an Internet Working Group
- Implementation
- MNG
- Mainstream Support and Present Status
Chapter 8: PNG Basics
- Chunks
- PNG Signature
- A Word on Color Representation
- The Simplest PNG
- PNG Image Types
- Palette-based
- Palette-based with Transparency
- Grayscale
- Grayscale with Transparency
- Grayscale with Alpha Channel
- RGB
- RGB with Transparency
- RGB with Alpha Channel
- Interlacing and Progressive Display
Chapter 9: Compression and Filtering
- Filtering
- The Deflate Compression Algorithm
- A Final Word on Patents
- Real-World Comparisons
- Practical Compression Tips
- Tips for Users
- Tips for Programmers
Chapter 10: Gamma Correction and Precision Color
- Transfer Functions and Gamma
- The gAMA Chunk
- Encoding Gamma
- Gamma Gotchas
- Chromaticity
- Color Management Systems and sRGB
- ICC Profiles
Chapter 11: PNG Options and Extensions
- Background Color (bKGD)
- Timestamp (tIME)
- Latin-1 Text Annotations (tEXt, zTXt)
- International Text Annotations (iTXt)
- Histogram (hIST)
- Suggested Palette (sPLT)
- Significant Bits (sBIT)
- Physical Pixel Dimensions (pHYs)
- Physical Scale (sCAL)
- Image Offset (oFFs)
- Pixel Calibration (pCAL)
- Fractal Parameters (fRAc)
- GIF Conversion Info (gIFg, gIFx)
- GIF Plain Text (gIFt)
- Other Chunks
Chapter 12: Multiple-Image Network Graphics
- Common Applications of MNG
- MNG Structure
- Image-Defining Chunks
- Chunks for Image Display, Manipulation, and Control
- The Simplest MNG
- An Animated MNG
- An Algorithmic MNG
- A JPEG Image with Transparency
- MNG Applications
- The Future?
Part III: Programming with PNG
Chapter 13: Reading PNG Images
- A libpng-based, PNG-Reading Demo Program
- Preliminaries
- readpng_init()
- sidebar: The Dark Side
- readpng_get_bgcolor()
- Design Decisions
- Gamma and Color Correction
- readpng_get_image()
- readpng_cleanup()
- Compositing and Displaying the Image
- Getting the Source Code
- Alternative Approaches
Chapter 14: Reading PNG Images Progressively
- Preliminaries
- readpng2_init()
- sidebar: readpng2_error_handler()
- readpng2_decode_data()
- readpng2_info_callback()
- readpng2_row_callback()
- Compositing and Displaying the Image
- readpng2_end_callback()
- readpng2_cleanup()
- Getting the Source Code
Chapter 15: Writing PNG Images
- A libpng-based, PNG-Writing Demo Program
- Gamma Correction
- Text Chunks
- writepng_version_info()
- writepng_init()
- sidebar: writepng_error_handler()
- sidebar: Tweaking Compression
- sidebar: Text Buffers, PNG Structs and Core Dumps
- Interlaced PNG: writepng_encode_image()
- Noninterlaced PNG: writepng_encode_row()
- writepng_cleanup()
- Getting the Source Code
Chapter 16: Other Libraries and Concluding Remarks
- Cross-Platform Libraries
- ImageMagick
- Image Library
- PaintLib
- QHTM
- ImageVision Library
- Imlib
- QuickTime
- ImageGear
- Java Advanced Imaging API
- Sixlegs PNG
- Java Image Content Handlers
- Java PNG
- JIMI
- Java Vector Graphics (JVG)
- Pnglets
- Img
- Python Imaging Library
- PNGHandler
- SuperView Library
- Windows-Specific Libraries
- ImageLib
- ImageMan ActiveX Suite and ImageMan DLL Suite
- ImgDLL
- LEADTOOLS
- PiXCL Tools
- PixelGraphicLibrary
- TwistedPixel
- Victor Image Processing Library
- Concluding Remarks
Glossary
References
Here are the other PNG-related pages at this site:
Copyright © 1999 Greg Roelofs.