Table of Contents

Cover

Title Page

Copyright

Dedication

Preface
    About This Book
        Part I, Using PNG
        Part II, The Design of PNG
        Part III, Programming with PNG
    Conventions Used in This Book
    How to Contact Us
    About the ``Second Edition'' (HTML Version)
    History
        Version 1
        Version 2
    Acknowledgments

Table of Contents (this page)

List of Figures

List of Tables

Part I: Using PNG

Chapter 1: An Introduction to PNG
    1.1. Overview of Image Properties
    1.2. What Is PNG Good For?
        1.2.1. Alpha Channels
        1.2.2. Gamma and Color Correction
        1.2.3. Interlacing and Progressive Display
        1.2.4. Compression
            1.2.4.1. Compression filters
            1.2.4.2. Compression oopers
        1.2.5. Summary of Usage
    1.3. Case Study of a PNG-Supporting Image Editor
        1.3.1. PNG Feature Support in Fireworks
        1.3.2. Invoking PNG Features in Fireworks
        1.3.3. Analysis of Fireworks PNG Support
        1.3.4. Concluding Thoughts on Fireworks

Chapter 2: Applications: WWW Browsers and Servers
    2.1. WWW Browsers
        2.1.1. Netscape Navigator
        2.1.2. Microsoft Internet Explorer
        2.1.3. Opera
        2.1.4. Acorn Browse
        2.1.5. Arena
        2.1.6. Amaya
        2.1.7. Other Browsers
            2.1.7.1. Amiga
            2.1.7.2. Acorn
            2.1.7.3. BeOS
            2.1.7.4. Macintosh
            2.1.7.5. NeXTStep/OpenStep
            2.1.7.6. OS/2
        2.1.8. Client-Side Workarounds: The OBJECT Tag
    2.2. WWW Servers
        2.2.1. ``Standard'' Servers
        2.2.2. Internet Information Server
        2.2.3. Server-Side Workarounds: Content Negotiation
            2.2.3.1. Apache variants files
            2.2.3.2. Apache MultiViews

Chapter 3: Applications: Image Viewers
    3.1. Windows 95/98/NT
    3.2. Windows 3.x
    3.3. VMS
    3.4. Unix
    3.5. OS/2
    3.6. Macintosh
    3.7. Java
    3.8. DOS
    3.9. BeOS
    3.10. Atari
    3.11. Amiga
    3.12. Acorn RISC OS

Chapter 4: Applications: Image Editors
    4.1. Photoshop 5
    4.2. Photoshop 4
    4.3. ImageReady
    4.4. Paint Shop Pro
    4.5. The GIMP
    4.6. Other Image Editors

Chapter 5: Applications: Image Converters
    5.1. pngcrush
    5.2. pnmtopng
    5.3. gif2png
    5.4. Tiff2png
    5.5. pngcheck
    5.6. Other Conversion Programs

Chapter 6: Applications: VRML Browsers and Other 3D Apps
    6.1. Cosmo Player
    6.2. WorldView/MSVRML
    6.3. blaxxun Contact
    6.4. Viscape Universal
    6.5. LibVRML97/Lookat
    6.6. FreeWRL
    6.7. VRMLView
    6.8. Other VRML Browsers
    6.9. Other 3D Applications

Part II: The Design of PNG

Chapter 7: History of the Portable Network Graphics Format
    7.1. Anatomy of an Internet Working Group
    7.2. Implementation
    7.3. MNG
    7.4. Mainstream Support and Present Status

Chapter 8: PNG Basics
    8.1. Chunks
    8.2. PNG Signature
    8.3. A Word on Color Representation
    8.4. The Simplest PNG
    8.5. PNG Image Types
        8.5.1. Palette-Based
        8.5.2. Palette-Based with Transparency
        8.5.3. Grayscale
        8.5.4. Grayscale with Transparency
        8.5.5. Grayscale with Alpha Channel
        8.5.6. RGB
        8.5.7. RGB with Transparency
        8.5.8. RGB with Alpha Channel
    8.6. Interlacing and Progressive Display

Chapter 9: Compression and Filtering
    9.1. Filtering
    9.2. The Deflate Compression Algorithm
        9.2.1. A Final Word on Patents
    9.3. Real-World Comparisons
    9.4. Practical Compression Tips
        9.4.1. Tips for Users
        9.4.2. Tips for Programmers

Chapter 10: Gamma Correction and Precision Color
    10.1. Transfer Functions and Gamma
    10.2. The gAMA Chunk
    10.3. Encoding Gamma
    10.4. Gamma Gotchas
    10.5. Chromaticity
    10.6. Color Management Systems and sRGB
    10.7. ICC Profiles

Chapter 11: PNG Options and Extensions
    11.1. Background Color (bKGD)
    11.2. Timestamp (tIME)
    11.3. Latin-1 Text Annotations (tEXt, zTXt)
    11.4. International Text Annotations (iTXt)
    11.5. Histogram (hIST)
    11.6. Suggested Palette (sPLT)
    11.7. Significant Bits (sBIT)
    11.8. Physical Pixel Dimensions (pHYs)
    11.9. Physical Scale (sCAL)
    11.10. Image Offset (oFFs)
    11.11. Pixel Calibration (pCAL)
    11.12. Fractal Parameters (fRAc)
    11.13. GIF Conversion Info (gIFg, gIFx)
    11.14. GIF Plain Text (gIFt)
    11.15. Other Chunks

Chapter 12: Multiple-Image Network Graphics
    12.1. Common Applications of MNG
    12.2. MNG Structure
        12.2.1. Image-Defining Chunks
        12.2.2. Chunks for Image Display, Manipulation, and Control
    12.3. The Simplest MNG
    12.4. An Animated MNG
    12.5. An Algorithmic MNG
    12.6. A JPEG Image with Transparency
    12.7. MNG Applications
    12.8. The Future?

Part III: Programming with PNG

Chapter 13: Reading PNG Images
    13.1. A libpng-Based, PNG-Reading Demo Program
    13.2. Preliminaries
    13.3. readpng_init()
    13.4. readpng_get_bgcolor()
    13.5. Design Decisions
    13.6. Gamma and Color Correction
    13.7. readpng_get_image()
    13.8. readpng_cleanup()
    13.9. Compositing and Displaying the Image
    13.10. Getting the Source Code
    13.11. Alternative Approaches

Chapter 14: Reading PNG Images Progressively
    14.1. Preliminaries
    14.2. readpng2_init()
    14.3. readpng2_decode_data()
    14.4. readpng2_info_callback()
    14.5. readpng2_row_callback()
    14.6. Compositing and Displaying the Image
    14.7. readpng2_end_callback()
    14.8. readpng2_cleanup()
    14.9. Getting the Source Code

Chapter 15: Writing PNG Images
    15.1. A libpng-Based, PNG-Writing Demo Program
    15.2. Gamma Correction
    15.3. Text Chunks
    15.4. writepng_version_info()
    15.5. writepng_init()
    15.6. Interlaced PNG: writepng_encode_image()
    15.7. Noninterlaced PNG: writepng_encode_row()
    15.8. writepng_cleanup()
    15.9. Getting the Source Code

Chapter 16: Other Libraries and Concluding Remarks
    16.1. Cross-Platform Libraries
    16.2. Windows-Specific Libraries
    16.3. Concluding Remarks

References
    Chapter 1
    Chapter 2
    Chapter 5
    Chapter 6
    Chapter 7
    Chapter 8
    Chapter 9
    Chapter 10
    Chapter 11
    Chapter 12
    Chapter 13
    Chapter 15
    Chapter 16

Glossary

GNU Free Documentation License

Index

Colophon
    About the Author
    Colophon