Thông tin tài liệu
PREVIOUS CONTENTS NEXT
PREVIOUS CONTENTS NEXT
PNG
The Definitive Guide
Greg Roelofs
Greg Roelofs
San Jose
(Publisher)
PREVIOUS CONTENTS NEXT
PNG: The Definitive Guide
by Greg Roelofs
Copyright © 1999 O'Reilly & Associates, Inc. All rights reserved.
Printed in the United States of America.
Published by O'Reilly & Associates, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
Additions specific to the ``Second Edition'' (HTML Version):
Copyright © 2002-2003 Greg Roelofs. All rights reserved.
Published by Greg Roelofs, roelofs @ pobox.com.
Cover design, trade dress, Nutshell Handbook, the Nutshell Handbook logo, and the O'Reilly logo
are registered trademarks of O'Reilly & Associates, Inc. The association between the image of a
kangaroo rat and the topic of PNG is a trademark of O'Reilly & Associates, Inc. Used with
permission.
Many of the designations used by manufacturers and sellers to distinguish their products are
claimed as trademarks. Where those designations appear in this book, and O'Reilly & Associates,
Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps.
While every precaution has been taken in the preparation of this book, the publisher assumes no
responsibility for errors or omissions, or for damages resulting from the use of the information
contained herein.
Permission is granted to copy, distribute, and/or modify this document under the terms of the GNU
Free Documentation License, Version 1.1 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of
the license is included in the section entitled "
GNU Free Documentation License".
While every precaution has been taken in the preparation of this book, the publisher assumes no
responsibility for errors or omissions, or for damages resulting from the use of the information
contained herein.
PREVIOUS CONTENTS NEXT
PREVIOUS CONTENTS NEXT
To Dad, who missed so much. You've always been my role model.
PREVIOUS CONTENTS NEXT
Preface
Contents:
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
Once upon a time, the only images were those painted on the walls of caves. Then came papyrus,
stucco walls (and a chapel ceiling), the printing press, photography, television, and computers.
Whether it's progress or not is a question for philosophers, but there is no doubt that creating,
copying, modifying, and transmitting images has never been easier or faster than it is today.
PNG, the Portable Network Graphics image format, is one little piece of the puzzle. In PNG: The
Definitive Guide, I attempt to make PNG a little less puzzling by explaining the motivations behind
PNG's creation, the ways in which it can be used, and the tools that can manipulate it. The intended
audience is anyone who deals with PNG images, whether as an artist, a programmer, or a surfer on
the World Wide Web.
About This Book
This book covers a lot of ground, as one would expect from anything with the word ``Definitive'' in
its title. It is divided into three main parts. As much as possible, each part is written so that it can be
read independently of the others. Even individual chapters are written this way, within reason; to
avoid too much repetition, I'll periodically refer to other chapters.
Part I, Using PNG
Part I is intended for designers, web site owners, casual image creators, and web surfers anyone
who wants a quick start on using PNG images in a variety of applications. Such users may need
only a brief overview of PNG features, but they want to know what applications support the format
and to what extent, how to invoke PNG-specific features within the applications, and how to work
around certain bugs or incompatibilities in the applications. Of course, a book like this cannot
possibly stay current, particularly not when it comes to software, but every effort has been made to
ensure that the information is accurate as of the day this is written (mid-April 1999).
Chapter 1, "An Introduction to PNG", covers some basic concepts of computer images and file
formats, explains how PNG fits in and where using it is most appropriate (and most inappropriate!),
and ends with an in-depth look at an image-editing application with particularly good PNG support.
Chapter 2, "Applications: WWW Browsers and Servers", looks at PNG support in web browsers
and servers and shows how to use the HTML OBJECT tag and server-side content negotiation to
serve PNG images to browsers capable of viewing them.
Chapter 3, "Applications: Image Viewers", lists more than 75 applications capable of viewing PNG
images, with support for a dozen operating systems. Viewers that are additionally capable of
converting to or from other image formats are so noted.
Chapter 4, "Applications: Image Editors", looks at PNG support in five of the most popular image
editors, showing how to invoke such features as gamma correction and alpha transparency, and
indicating some of the problems unwary users may encounter.
Chapter 5, "Applications: Image Converters", covers five conversion applications in detail,
including one specifically designed to optimize PNG images and another designed to test PNG
images for conformance to the specification. In addition, the chapter lists another 16 dedicated
image converters beyond those in
Chapter 3, "Applications: Image Viewers".
Chapter 6, "Applications: VRML Browsers and Other 3D Apps", looks at PNG as a required texture
format of the VRML 97 specification and investigates the level of conformance of seven browsers.
It also lists a dozen PNG-supporting applications designed for the editing or rendering of 3D scenes.
Part II, The Design of PNG
Part II looks at the PNG format from an historical and technical perspective, detailing its structure
and the rationale behind its design. Part II is intended for more technical readers who want to
understand PNG to its core.
Chapter 7, "History of the Portable Network Graphics Format", looks at the events leading up to the
creation of PNG, some of the design decisions that went into the format, how it has fared in the
subsequent years, and what to expect for the future.
Chapter 8, "PNG Basics", covers the basic ``chunk'' structure of PNG files and compares PNG's
level of support for various fundamental image types against that of other image formats.
Chapter 9, "Compression and Filtering", delves into the heart of PNG's compression engine,
provides the results of some real-world compression tests, and offers a number of tips for improving
compression to both users and programmers of the format.
Chapter 10, "Gamma Correction and Precision Color", discusses one of the least understood but
most important features of PNG, its support for platform-independent image display. That is, in
order for an image to appear the same way on different computer systems or even different print
media, it is necessary for both the user and the program to understand and support gamma and color
correction.
Chapter 11, "PNG Options and Extensions", details the optional features supported by PNG,
including text annotations, timestamps, background colors, and other ancillary information.
Chapter 12, "Multiple-Image Network Graphics", is a brief look at PNG's multi-image cousin,
MNG, which supports animations, slide shows, and even highly efficient storage of some types of
single images.
Part III, Programming with PNG
Part III covers three working, libpng-based demo programs in detail, and lists a number of other
toolkits that offer PNG support for various programming languages and platforms. It is intended for
programmers who wish to add PNG support to their applications.
Chapter 13, "Reading PNG Images", is a detailed tutorial on how to write a basic PNG-reading
display program in C using the official PNG reference library. The application is divided into a
generic PNG back end and platform-specific front ends, of which two are provided (for 32-bit
Windows and the X Window System).
Chapter 14, "Reading PNG Images Progressively", inverts the logic of the previous chapter's demo
program, simulating the design of a web browser's display-as-you-go PNG code. Progressive
display of interlaced, transparent PNG images over a background image is supported.
Chapter 15, "Writing PNG Images", shows how to create a basic PNG-writing program. The
supplied code compiles into a simple command-line program under both Windows and Unix, and it
includes support for interlacing, gamma correction, alpha transparency, and text annotations.
Chapter 16, "Other Libraries and Concluding Remarks", lists a number of alternative libraries and
toolkits, both free and commercial, including ones for C, C++, Java
TM
, Pascal, tcl/tk, Python, and
Visual Basic. The chapter ends with a look back at what parts of the PNG design process worked
and what didn't, and also a look forward at what lies ahead.
The References section lists technical references and resources for further information, both printed
and electronic.
The Glossary defines a number of acronyms and technical terms used throughout the book.
Conventions Used in This Book
Italic is used for pathnames, filenames, program names, new terms where they are defined,
newsgroup names, and Internet addresses, such as domain names, URLs, and email addresses.
Constant width is used to show code, commands, HTML tags, and computer-generated output.
Constant width bold is used in examples to show commands or other text that should be
typed literally by the user.
Constant width italic is used in code fragments and examples to show variables for which a context-
specific substitution should be made. The variable email address, for example, would be replaced
by an actual email address.
CAUTION
This type of boxed paragraph indicates a tip, suggestion, general note, or
caution.
How to Contact Us
Any information in this section referring to O'Reilly & Associates was valid only for the original,
paper edition of the book. For this (HTML) version, the author may be contacted at:
roelofs @ pobox.com
The original text follows.
We have tested and verified all of the information in this book to the best of our ability, but you may
find that features have changed (or even that we have made mistakes!). Please let us know about
any errors you find, as well as your suggestions for future editions, by writing:
O'Reilly & Associates, Inc.
101 Morris Street
Sebastopol, CA 95472
800-998-9938 (in the U.S. or Canada)
707-829-0515 (international/local)
707-829-0104 (fax)
You can also send us messages electronically. To subscribe to the mailing list or request a catalog,
[...]... 4.I of the GNU FDL, describes the history of the document, not of the PNG format (It may be moved to a separate page if it grows too unwieldy for the Preface.) Version 1 q q q q Title: PNG: The Definitive Guide Year: 1999 Author: Greg Roelofs Publisher: O'Reilly & Associates The first edition was published in softcover (paper) format in June 1999 Version 2 q q q q q Title: PNG: The Definitive Guide. .. general rule, text embedded in an interlaced PNG image becomes readable roughly twice as fast as in the identical interlaced GIF, as shown in Figure 1-4 The rows show the respective appearance after one-sixty-fourth, one-thirty-second, one-sixteenth, one-eighth, one-fourth, half, and all of the data has arrived The first column shows GIF interlacing; the others show PNG interlacing, rendered in various styles:... respectively Note that the word Interlacing has roughly the same readability in the fifth GIF row, the fourth blocky PNG row, and the third interpolated PNG row In other words, the GIF text takes two to four times as long to become readable [4] I am implicitly assuming that one-sixty-fourth of the compressed data (the stuff that can be said to ``arrive'') corresponds to one-sixty-fourth of the uncompressed... notice the dirty (or ``noisy'') appearance of the blue-on-white text, the faint yellow spots above and below it, the darker blue spots in the upper half, and the hints of pink in the white-on-blue text [7] There are two forms of truly lossless JPEG, which are discussed briefly in Chapter 8, "PNG Basics", but currently they are almost universally unsupported There is also a relatively new TIFF variant... Publisher: Greg Roelofs Network Location: http://www.libpng.org/pub /png/ book/ This is the first online version of the book, released under the GNU Free Documentation License and published in July 2003 The original title and cover image are used with permission of the original publisher (O'Reilly and Associates) The complete text may be downloaded from SourceForge.net The principal change, obviously, is the. .. truecolor images, but in indexed-color images they can be independent of each other This is because the sample depth refers to the color values in the palette, while the pixel depth refers to the index values of each pixel (which reference the palette colors) To put it more concretely, the color values in the palette are usually 24-bit values (8 bits per sample), but the pixel indices are usually 8... in grayscale) together with two 256-color versions of the same image one simply quantized to 256 colors and the other both quantized and dithered The insets give a magnified view of one region, showing the relative effects of the two procedures Figure 1-1 : (a) Original, 24-bit image; (b) same image after quantization, and (c) after quantization and dithering (Click on images for full-scale, color versions.)... soon as they find something to render, the remainder of the block is discarded (This is the sense in which the inner stuff is ``affected'': it may be completely ignored Indeed, only one layer is not ignored at least according to the HTML 4.0 specification.) So the preferred approach for PNG images is simply to wrap an OBJECT tag around an old-style IMG tag, where the OBJECT refers to the PNG and the IMG... use the GIF or JPEG from the inner IMG tag, or the text in the ALT attribute if they do not support images At least, that's the theory The main problem with this approach is that no version of Navigator or Internet Explorer up through the latest 4.x releases handles OBJECT tags correctly Both browsers will attempt to find a plug-in to handle an OBJECT image; lacking that, they will either render the. .. Servers" But plug-in oddities notwithstanding, the IMG-within-an-OBJECT approach works moderately well now and will only get better as browsers improve their conformance with WWW standards and as the need for external PNG plug-ins diminishes Indeed, most of the images on the Portable Network Graphics home site are referenced in this manner As for referring to PNG images directly in old-style IMG tags, . PREVIOUS CONTENTS NEXT PNG The Definitive Guide Greg Roelofs Greg Roelofs San Jose (Publisher) PREVIOUS CONTENTS NEXT PNG: The Definitive Guide by Greg Roelofs Copyright © 1999 O'Reilly. of the puzzle. In PNG: The Definitive Guide, I attempt to make PNG a little less puzzling by explaining the motivations behind PNG& apos;s creation, the ways in which it can be used, and the. document, not of the PNG format. (It may be moved to a separate page if it grows too unwieldy for the Preface.) Version 1 ● Title: PNG: The Definitive Guide ● Year: 1999 ● Author: Greg Roelofs ●
Ngày đăng: 31/03/2014, 17:15
Xem thêm: o'reilly - png the definitive guide - greg roelofs, o'reilly - png the definitive guide - greg roelofs