Table of Contents

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

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

About the Author

Colophon

Get PNG: The Definitive Guide now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.