1 - 2 - 3 - 4 - 7 - 8 - A - B - C - D - E - F - G - H - I - J - L - M - N - O - P - R - S - T - U - V - W
PNG
Click on the red underlined text to get to the source
...
The PNG format provides a portable, legally unencumbered, well-
compressed, well-specified standard for lossless bitmapped image ...
... files.
Although the initial motivation for developing PNG was to replace
GIF, the design provides some useful new features not available in
...
... * Faster initial presentation in progressive display mode.
PNG is designed to be:
* Simple and portable: developers should be able to implement PNG ...
... PNG is designed to be:
* Simple and portable: developers should be able to implement PNG
easily.
* Legally unencumbered: to the best knowledge of the PNG ...
... PNG
easily.
* Legally unencumbered: to the best knowledge of the PNG authors,
no algorithms under legal challenge are used. (Some
...
... format, and in most cases more effectively.
* Interchangeable: any standard-conforming PNG decoder must read
all conforming PNG ...
... PNG decoder must read
all conforming PNG files.
* Flexible: the format allows for future extensions and private
add-ons, without compromising interchangeability of basic PNG ...
... PNG files.
* Flexible: the format allows for future extensions and private
add-ons, without compromising interchangeability of basic PNG.
* Robust: the design supports full file integrity checking as
...
...
This chapter discusses basic data representations used in PNG files,
as well as the expected representation of the image data.
...
... (Section 2.7).
Source data with a precision not directly supported in PNG (for
example, 5 bit/sample truecolor) must be scaled up to the next
...
...
Conceptually, a PNG image is a rectangular pixel array, with
pixels appearing left-to-right within each scanline, and scanlines
...
... in all cases the packing is simple and efficient.
PNG permits multi-sample pixels only with 8- and 16-bit samples,
so multiple samples of a single pixel are never packed into one
...
... An alpha channel, representing transparency information on a per-
pixel basis, can be included in grayscale and truecolor PNG
images.
...
... fraction; in effect, such an image is already composited against a
black background. PNG does not use premultiplied alpha.)
Transparency control is also possible without the storage cost of
...
... Filtering can improve the compressibility of the data. The filter
step itself does not reduce the size of the data. All PNG filters
are strictly lossless ...
...
A PNG image can be stored in interlaced order to allow progressive
display. The purpose of this feature is to allow images ...
... For high-precision applications, the exact chromaticity of the RGB
data in a PNG image can be specified via the cHRM chunk, allowing
more accurate color matching than gamma correction alone will
...
... Character codes not defined in Latin-1 should not be used, because
they have no platform-independent meaning. If a non-Latin-1 code
does appear in a PNG text string, its interpretation will vary
across platforms and decoders. Some systems might not even be
...
...
A PNG file consists of a PNG signature followed by a series of
chunks. This chapter defines the signature ...
...
The first eight bytes of a PNG file always contain the following
(decimal) values:
...
... This signature indicates that the remainder of the file contains a
single PNG image, consisting of a series of chunks beginning with
an IHDR chunk and ending with an IEND chunk.
...
... an IHDR chunk and ending with an IEND chunk.
See Rationale: PNG file signature (Section 12.11).
...
... 4-byte chunk type code. For convenience in description and
in examining PNG files, type codes are restricted to consist of
uppercase and lowercase ASCII letters (A-Z and a-z, or 65-90
...
... properties of a chunk even when it does not recognize the type
code. These rules are intended to allow safe, flexible extension
of the PNG format, by allowing a decoder to decide what to do when
it encounters an unknown chunk. The naming rules are not normally
...
... 0 (uppercase) = public, 1 (lowercase) = private.
A public chunk is one that is part of the PNG specification or
is registered in the list of PNG special-purpose public chunk
...
... A public chunk is one that is part of the PNG specification or
is registered in the list of PNG special-purpose public chunk
types. Applications can also define private (unregistered)
...
... Must be 0 (uppercase) in files conforming to this version of
PNG.
The significance of the case of the third letter of the chunk
...
... Decoders should not complain about a lowercase third letter,
however, as some future version of the PNG specification could
define a meaning for this bit. It is sufficient to treat a
...
... bit is not of interest to pure decoders, but it
is needed by PNG editors (programs that modify PNG files).
This bit ...
... decoders, but it
is needed by PNG editors (programs that modify PNG files).
This bit defines the proper handling of unrecognized chunks in
...
... If a chunk's safe-to-copy bit is 1, the chunk may be copied to
a modified PNG file whether or not the software recognizes the
chunk type, and regardless of the extent of the file
modifications.
...
... or reordering of critical chunks, then unrecognized unsafe
chunks must not be copied to the output PNG file. (Of course,
if the program does recognize the chunk, it can choose to
output an appropriately modified version ...
... version.)
A PNG editor is always allowed to copy all unrecognized chunks
if it has only added, deleted, modified, or reordered ancillary
...
... chunks to depend on other ancillary chunks.
PNG editors that do not recognize a critical chunk must report
an error and refuse to process that PNG ...
... PNG editors that do not recognize a critical chunk must report
an error and refuse to process that PNG file at all. The
safe/unsafe mechanism is intended for use with ancillary
chunks. The safe-to-copy bit ...
... chunks.
Rules for PNG editors are discussed further in Chunk Ordering
Rules (Chapter 7).
...
...
This chapter defines the standard types of PNG chunks.
...
... standard critical chunks. A valid PNG image must contain an IHDR
chunk, one or more IDAT chunks, and an IEND chunk.
...
... deflate/inflate compression with a 32K
sliding window) is defined. All standard PNG images must be
compressed with this scheme. The compression method ...
... boundaries have no semantic significance and can occur at any
point in the compressed datastream. A PNG file in which each
IDAT chunk contains only one data byte is legal, though
remarkably wasteful of space. (For that matter, zero-length
...
...
The IEND chunk must appear LAST. It marks the end of the PNG
datastream. The chunk's data field is empty.
...
...
Applications that need device-independent specification of
colors in a PNG file can use the cHRM chunk to specify the 1931
CIE x,y chromaticities of the red, green, and blue primaries
used in the image ...
... integer 31270.
cHRM is allowed in all PNG files, although it is of little
value for grayscale images.
...
...
To simplify decoders, PNG specifies that only certain sample
depths can be used, and further specifies that sample values
should be scaled to the full range ...
... decoders to recover the original data losslessly even if the
data had a sample depth not directly supported by PNG. We
recommend that an encoder emit an sBIT chunk if it has
...
... image is a
valid PNG file of the sample depth indicated by IHDR. However,
if the decoder wishes to recover the original data at its
...
... Other keywords may be invented for other purposes. Keywords of
general interest can be registered with the maintainers of the
PNG specification. However, it is also permitted to use
private unregistered keywords. (Private keywords should be
...
... time stamp that is updated whenever the image data is changed.
It is recommended that tIME not be changed by PNG editors that
do not change the image data. See also the Creation Time tEXt
...
...
Additional public PNG chunk types are defined in the document "PNG
Special-Purpose Public Chunks" [PNG-EXTENSIONS ...
...
Additional public PNG chunk types are defined in the document "PNG
Special-Purpose Public Chunks" [PNG-EXTENSIONS]. Chunks described
...
... encouraged to use those chunk types whenever appropriate for their
applications. Additional chunk types can be proposed for
inclusion in that list by contacting the PNG specification
maintainers at png-info@uunet.uu.net or at png-group@w3.org.
...
...
New public chunks will only be registered if they are of use to
others and do not violate the design philosophy of PNG. Chunk
registration is not automatic, although it is the intent of the
...
... compression method 0 (the only compression method presently
defined for PNG) specifies deflate/inflate compression with a 32K
...
...
Deflate-compressed datastreams within PNG are stored in the "zlib"
format, which has the structure:
...
... size of not more than 32K. Note that the zlib compression method
number is not the same as the PNG compression method number. The
additional flags must not specify a preset dictionary.
...
... algorithm used is not the same as the CRC calculation
used for PNG chunk check values. The zlib check value is useful
mainly as a cross-check that the deflate and inflate algorithms ...
... implemented correctly. Verifying the chunk CRCs provides adequate
confidence that the PNG file has been transmitted undamaged.
In a PNG ...
... PNG file has been transmitted undamaged.
In a PNG file, the concatenation of the contents of all the IDAT
chunks makes up a zlib datastream as specified above. This
...
... cannot rely on this.)
PNG also uses zlib datastreams in zTXt chunks. In a zTXt chunk, the
remainder of the chunk following the compression method byte is a
...
... filter that refers to it.
PNG imposes no restriction on which filter types can be applied to
an image ...
...
To allow new chunk types to be added to PNG, it is necessary to
establish rules about the ordering requirements for all chunk types.
...
... establish rules about the ordering requirements for all chunk types.
Otherwise a PNG editing program cannot know what to do when it
encounters an unknown chunk.
...
... encounters an unknown chunk.
We define a "PNG editor" as a program that modifies a PNG file and
wishes to preserve as much as possible of the ancillary information ...
...
We define a "PNG editor" as a program that modifies a PNG file and
wishes to preserve as much as possible of the ancillary information
...
... wishes to preserve as much as possible of the ancillary information
in the file. Two examples of PNG editors are a program that adds or
modifies text chunks, and a program that adds a suggested palette to
a truecolor PNG ...
... PNG editors are a program that adds or
modifies text chunks, and a program that adds a suggested palette to
a truecolor PNG file. Ordinary image editors are not PNG editors in
...
... a truecolor PNG file. Ordinary image editors are not PNG editors in
this sense, because they usually discard all unrecognized information
while reading in an image ...
... while reading in an image. (Note: we strongly encourage programs
handling PNG files to preserve ancillary information whenever
possible.)
...
... PLTE does not recognize this new chunk, it may insert PLTE in the
wrong place, namely after the new chunk. We could prevent such
problems by requiring PNG editors to discard all unknown chunks, but
that is a very unattractive solution. Instead, PNG requires
...
... problems by requiring PNG editors to discard all unknown chunks, but
that is a very unattractive solution. Instead, PNG requires
ancillary chunks not to have ordering restrictions like this.
...
... To prevent this type of problem while allowing for future extension,
we put some constraints on both the behavior of PNG editors and the
allowed ordering requirements for chunks.
...
... Behavior of PNG editors ...
...
The rules for PNG editors are:
* When copying an unknown unsafe-to-copy ancillary chunk, a
...
...
* When copying an unknown unsafe-to-copy ancillary chunk, a
PNG editor must not move the chunk relative to any critical
chunk. It can relocate the chunk freely relative to other
...
... critical chunks if
it is preserving unknown unsafe-to-copy chunks.)
* When copying an unknown safe-to-copy ancillary chunk, a PNG
editor must not move the chunk from before IDAT to after
IDAT or vice versa. (This is well defined because IDAT is
...
... that chunk type. However, it can always choose to apply the
above general rules instead.
* PNG editors must give up on encountering an unknown critical
chunk type, because there is no way to be certain that a
...
...
These rules are expressed in terms of copying chunks from an input
file to an output file, but they apply in the obvious way if a PNG
file is modified in place.
...
... other ancillary chunks. (For example, it is unsafe to assume that
your private ancillary chunk occurs immediately before IEND. Even
if your application always writes it there, a PNG editor might
have inserted some other ancillary chunk after it. But you can
safely assume that your chunk will remain somewhere between IDAT
...
... Critical chunks can have arbitrary ordering requirements, because
PNG editors are required to give up if they encounter unknown
critical chunks. For example, IHDR has the special ordering rule
...
... critical chunks. For example, IHDR has the special ordering rule
that it must always appear first. A PNG editor, or indeed any
PNG-writing program, must know and follow the ordering rules for
...
... that it must always appear first. A PNG editor, or indeed any
PNG-writing program, must know and follow the ordering rules for
any critical chunk type that it can emit.
...
... On systems where file names customarily include an extension
signifying file type, the extension ".png" is recommended for PNG
files. Lower case ".png" is preferred if file names are case-
sensitive.
...
...
* The four-byte file type code for PNG files is "PNGf". (This
code has been registered with Apple for PNG ...
... PNG files is "PNGf". (This
code has been registered with Apple for PNG files.) The
creator code will vary depending on the creating
application.
...
... creator code will vary depending on the creating
application.
* The contents of the data fork must be a PNG file exactly as
described in the rest of this specification.
* The contents of the resource fork are unspecified. It may
...
... be empty or may contain application-dependent resources.
* When transferring a Macintosh PNG file to a non-Macintosh
system, only the data fork should be transferred.
...
...
PNG itself is strictly a single-image format. However, it may be
necessary to store multiple images ...
... GIF files. In the future, a
multiple-image format based on PNG may be defined. Such a format
will be considered a separate file format and will have a
...
... file format and will have a
different signature. PNG-supporting applications may or may not
choose to support the multiple-image format.
...
...
A PNG file or datastream is composed of a collection of explicitly
typed "chunks". Chunks whose contents are defined by the
specification could actually contain anything, including malicious
...
... code. But there is no known risk that such malicious code could
be executed on the recipient's computer as a result of decoding
the PNG image.
...
... security risk associated
with unknown or unimplemented chunk types, because such chunks
will be ignored, or at most be copied into another PNG file.
The tEXt and zTXt chunks contain data that is meant to be
...
... attempt to overflow the decoder's buffers. Also, the PNG
signature bytes provide early detection of common file
...
... encoder behavior. The
only absolute requirement on a PNG encoder is that it produce files
that conform to the format specified in the preceding chapters.
...
... When encoding input samples that have a sample depth that cannot
be directly represented in PNG, the encoder must scale the samples
up to a sample depth that is allowed by PNG ...
... PNG, the encoder must scale the samples
up to a sample depth that is allowed by PNG. The most accurate
scaling method is the linear equation
...
... encoder_gamma) * MAXSAMPLE)
The file_gamma value to be written in the PNG gAMA chunk is the
same as encoder_gamma in this equation, since we are assuming the
...
... value can be selected somewhat arbitrarily. Values of 0.45 or 0.5
are generally good choices because they are common in video
systems, and so most PNG decoders should do a good job displaying
such images ...
... Some image renderers may simultaneously write the image to a PNG
file and display it on-screen. The displayed pixels should be
gamma corrected for the display system and viewing conditions in
...
...
If the renderer wants to write the same gamma-corrected sample
values to the PNG file, avoiding a separate gamma-encoding step
for file output, then this screen_gc value should be written in
...
... encoding step
for file output, then this screen_gc value should be written in
the gAMA chunk. This will allow a PNG decoder to reproduce what
the file's originator saw on screen during rendering (provided the
...
... values for file storage using a standard value of gamma such as
0.5. In fact, this is preferable, since some PNG decoders may not
accurately display images ...
... encoding,
instead making sample values directly proportional to scene light
intensity. If the PNG encoder receives sample values that have
already been quantized into linear-light integer values ...
... in further loss of information. The encoder should just write the
sample values to the PNG file. This "linear" sample encoding is
equivalent to gamma encoding ...
... File format converters generally should not attempt to convert
supplied images to a different gamma. Store the data in the PNG
file without conversion, and record the source gamma if it is
known. Gamma alteration at file conversion time causes re-
...
... such cases, a file format converter is strongly encouraged to
write a PNG gAMA chunk that corresponds to the known gamma of the
source image. Note that some file formats ...
... camera. If the input file's gamma
value is greater than 1.0, it is almost certainly a display system
gamma, and you should use its reciprocal for the PNG gAMA.
If the encoder ...
... file_gamma = viewing_gamma / display_gamma
This will allow viewers of the PNG file to see the same image that
the person running the file format ...
... image gamma, it's
better to write a gAMA chunk with an approximately right value
than to omit the chunk and force PNG decoders to guess at an
appropriate gamma.
...
... images that actually use them.
Scanners that produce PNG files as output should insert the filter
chromaticities into a cHRM chunk and the camera ...
... colors that are outside the gamut of the chosen RGB device should
be clipped or otherwise constrained to be within the gamut; PNG
does not store out of gamut colors.
...
... RGB gamut, so the image data will require gamut mapping before
writing to PNG format.) TIFF 6.0 files can optionally store
calibration information, which if present should be used to
...
... images to a different RGB color space. Store the
data in the PNG file without conversion, and record the source
primary chromaticities if they are known. Color space
transformation at file conversion time is a bad idea because of
...
... useful data and are simply there to fill out the rectangular image
area required by PNG. In this case, fully transparent pixels
should all be assigned the same color value for best compression ...
... If the original image has premultiplied (also called "associated")
alpha data, convert it to PNG's non-premultiplied format by
dividing each sample value by the corresponding alpha value, then
multiplying by the maximum value for the image ...
...
A PLTE chunk can appear in truecolor PNG files. In such files,
the chunk is not an essential part of the image data, but simply
...
... present the image against the same background color. It is
recommended that PNG editors delete or recompute the palette if
they alter or remove ...
... sure to check that it meets the restrictions on keywords.
PNG text strings are expected to use the Latin-1 character set.
Encoders ...
...
Applications can use PNG private chunks to carry information that
need not be understood by other applications. Such chunks must be
given names with lowercase second letters, to ensure that they can
...
... image. Creation of
private critical chunks is discouraged because they render PNG
files unportable. Such chunks should not be used in publicly
available software or files. If private critical ...
...
If you want others outside your organization to understand a chunk
type that you invent, contact the maintainers of the PNG
specification to submit a proposed chunk name and definition for
addition to the list of special-purpose public chunks (see
...
... since the idea is to let other users figure out what the chunk
contains. If of general usefulness, new keywords can be
registered with the maintainers of the PNG specification. But it
is permissible to use keywords without registering them first.
...
... decoder behavior. The
only absolute requirement on a PNG decoder is that it successfully
read any file conforming to the format specified in the preceding
...
... To ensure early detection of common file-transfer problems,
decoders should verify that all eight bytes of the PNG file
signature are correct. (See Rationale: PNG ...
... PNG file
signature are correct. (See Rationale: PNG file signature,
Section 12.11.) A decoder ...
... Non-square pixels can be represented (see the pHYs chunk), but
viewers are not required to account for them; a viewer can present
any PNG file as though its pixels are square.
Conversely, viewers running on display hardware ...
...
To achieve PNG's goal of universal interchangeability, decoders
are required to accept all types of PNG ...
... PNG's goal of universal interchangeability, decoders
are required to accept all types of PNG image: indexed-color,
truecolor, and grayscale. Viewers running on indexed-color
...
... image. This approach requires more work, first in choosing the
palette, and second in mapping individual pixels to the closest
available color. PNG allows the encoder to supply a suggested
palette in a PLTE chunk, but not all encoders ...
...
Numerous implementations of color quantization are available. The
PNG reference implementation, libpng, includes code for the
purpose.
...
...
Decoders may wish to scale PNG data to a lesser sample depth (data
precision) for display. For example, 16-bit data will need to be
...
... Decoder gamma handling, Section 10.5.)
When an sBIT chunk is present, the original pre-PNG data can be
recovered by shifting right to the sample depth specified by sBIT.
Note that linear scaling will not necessarily reproduce the
...
... 8-bit, 31 for 5-bit, etc), insample
is the value of the sample in the PNG file, and fbval is the value
to write into the frame buffer. The first line converts from
...
... In many cases, decoders will treat image data in PNG files as
device-dependent RGB data and display it without modification
...
... RGB data and display it without modification
(except for appropriate gamma correction). This provides the
fastest display of PNG images. But unless the viewer uses exactly
the same display hardware ...
... depend on the monitor type, i.e., the values in the cHRM chunk.
Decoders may wish to do this for PNG files with no cHRM chunk. In
that case, a reasonable default would be the CCIR 709 primaries
[ITU-BT709 ...
... against. The background color is either used as background or
ignored; it is not an intermediate layer between the PNG image and
some other background.
...
... composite a foreground image against a background image; the PNG
file defines the foreground image and the transparency mask, but
...
... background, even if it's only black. Ignoring the alpha channel
will cause PNG images that have been converted from an
associated-alpha representation to look wrong. (Of course, if the
...
... images that contain
only zero and one alpha values. (This is implicitly true for
grayscale and truecolor PNG files that use a tRNS chunk; for
indexed-color PNG files, it is easy to check whether tRNS contains
...
... grayscale and truecolor PNG files that use a tRNS chunk; for
indexed-color PNG files, it is easy to check whether tRNS contains
any values other than 0 and 255.) In this simple case,
...
...
In truecolor PNG files, the encoder may have provided a suggested
PLTE chunk for use by viewers running on indexed-color hardware ...
... composite image. In this case it is best to perform a truecolor
compositing step on the truecolor PNG image and background image,
...
... able to understand it.
PNG text is not supposed to contain any characters outside the ISO
8859-1 "Latin-1" character set (that is, no codes 0-31 or 127-
...
... transparent a pixel, the less it hides the background against
which the image is presented. In PNG, alpha is really the degree
of opacity: zero alpha represents a completely transparent pixel,
maximum alpha represents a completely opaque ...
...
Chunk
A section of a PNG file. Each chunk has a type indicated by its
chunk type name. Most types of chunks also include some data.
The format and meaning of the data within the chunk are determined
...
... sequence of bytes. This term is used rather than "file" to
describe a byte sequence that is only a portion of a file. We
also use it to emphasize that a PNG image might be generated and
consumed "on the fly", never appearing in a stored file at all.
...
... Deflate
The name of the compression algorithm used in standard PNG files,
as well as in zip, gzip, pkzip, and other compression ...
... A transformation applied to image data in hopes of improving its
compressibility. PNG uses only lossless (reversible) filter
...
... image representation in which each pixel is represented by a
single sample value representing overall luminance (on a scale
from black to white). PNG also permits an alpha sample to be
stored for each pixel of a grayscale image.
...
... Palette
The set of colors available in an indexed-color image. In PNG, a
palette is an array of colors defined by red, green, and blue
samples. (Alpha values can also be defined for palette entries,
...
... image is a rectangular array of pixels.
PNG editor
A program that modifies a PNG file and preserves ancillary
information ...
... PNG editor
A program that modifies a PNG file and preserves ancillary
information, including chunks that it does not recognize. Such a
program must obey the rules given in Chunk Ordering Rules (Chapter
...
... image representation in which pixel colors are defined by
storing three samples for each pixel, representing red, green, and
blue intensities respectively. PNG also permits an alpha sample
to be stored for each pixel of a truecolor image.
...
... compression. Also the name of a library
implementing this method. PNG implementations need not use the
zlib library, but they must conform to its format for compressed
data.
...
...
(This appendix is not part of the formal PNG specification.)
This appendix gives the reasoning behind some of the design decisions
...
...
This appendix gives the reasoning behind some of the design decisions
in PNG. Many of these decisions were the subject of considerable
debate. The authors freely admit that another group ...
... But this would require new code anyway; it would not be all that
much easier to implement than a whole new file format. (PNG is
designed to be simple to implement, with the exception of the
compression ...
...
The features chosen for PNG are intended to address the needs of
applications that previously used the special strengths of GIF ...
... GIF is well adapted for online communications
because of its streamability and progressive display capability.
PNG shares those attributes.
We have also addressed some of the widely known shortcomings of
...
... We have also addressed some of the widely known shortcomings of
GIF. In particular, PNG supports truecolor images. We know of no
widely used image ...
... image format that losslessly compresses truecolor
images as effectively as PNG does. We hope that PNG will make use
of truecolor images ...
... images as effectively as PNG does. We hope that PNG will make use
of truecolor images more practical and widespread.
...
... images. GIF provided a simple transparent-color
specification for this purpose. PNG supports a full alpha channel
as well as transparent-color specifications. This allows both
...
... Internet
are often mistakenly processed as text, leading to file
corruption. PNG is designed so that such errors can be detected
quickly and reliably.
...
... quickly and reliably.
PNG has been expressly designed not to be completely dependent on
a single compression technique. Although deflate ...
... deflate/inflate
compression is mentioned in this document, PNG would still exist
without it.
...
...
Some features have been deliberately omitted from PNG. These
choices were made to simplify implementation of PNG, promote
...
... Some features have been deliberately omitted from PNG. These
choices were made to simplify implementation of PNG, promote
portability and interchangeability, and make the format as simple
and foolproof as possible for users. In particular:
...
... and foolproof as possible for users. In particular:
* There is no uncompressed variant of PNG. It is possible to
store uncompressed data by using only uncompressed deflate
...
... deflate
does not make incompressible data much larger). However,
PNG software must support full deflate/inflate; any software
that does not is not compliant with the PNG ...
... PNG software must support full deflate/inflate; any software
that does not is not compliant with the PNG standard. The
two most important features of PNG---portability and
...
... that does not is not compliant with the PNG standard. The
two most important features of PNG---portability and
compression---are absolute requirements ...
... deflate/inflate compromises both of these objectives.
* There is no lossy compression in PNG. Existing formats such
as JFIF already handle lossy compression well. Furthermore,
...
... compression is
complex to implement. Adding JPEG support to a PNG decoder
might increase its size by an order of magnitude. This
...
... appear to be more practical than a common thumbnail format.
It is worth noting that private extensions to PNG could easily add
these features. We will not, however, include them as part of the
basic PNG ...
... PNG could easily add
these features. We will not, however, include them as part of the
basic PNG standard.
PNG ...
... PNG standard.
PNG also does not support multiple images in one file. This
restriction is a reflection of the reality that many applications
...
...
Numerous existing formats were considered before deciding to
develop PNG. None could meet the requirements we felt were
important for PNG ...
... image representations are too machine-specific or not
adequately compressed. The overall chunk structure of IFF is a
useful concept that PNG has liberally borrowed from, but we did
not attempt to be bit-for-bit ...
...
PNG's two-dimensional interlacing scheme is more complex to
implement than GIF's line-wise interlacing. It also costs a
...
... image is a World Wide Web imagemap that the user has seen
before, PNG's first pass is often enough to determine where to
click. The PNG scheme also looks better than GIF ...
... before, PNG's first pass is often enough to determine where to
click. The PNG scheme also looks better than GIF's, because
horizontal and vertical resolution never differ by more than a
...
... factor of two; this avoids the odd "stretched" look seen when
interlaced GIFs are filled in by replicating scanlines.
Preliminary results show that small text in an interlaced PNG
image is typically readable about twice as fast as in an
...
... image is typically readable about twice as fast as in an
equivalent GIF, i.e., after PNG's fifth pass or 25% of the image
data, instead of after GIF ...
... data, instead of after GIF's third pass or 50%. This is again due
to PNG's more balanced increase in resolution.
...
... appearing "too dark" or "too light".
PNG expects viewers to compensate for image gamma at the time that
the image ...
... roundoff error. Requiring conversion at encoding time thus
causes irreversible loss. Since PNG is intended to be a
lossless storage format ...
...
PNG uses "unassociated" or "non-premultiplied" alpha so that
images with separate transparency masks can be stored losslessly.
...
... is covered by the image). This representation can be converted to
PNG by dividing the sample values by alpha, except where alpha is
zero. The result will look good if displayed by a viewer that
handles alpha properly, but will not look very good if the viewer
...
...
Although each form of alpha storage has its advantages, we did not
want to require all PNG viewers to handle both forms. We
standardized on non-premultiplied alpha as being the lossless and
...
... need more than that: they want to be able to store several
identifiable pieces of text. For example, a database using PNG
files to store medical X-rays would likely want to include
patient's name, doctor's name, etc. A simple way to do this in
...
... files to store medical X-rays would likely want to include
patient's name, doctor's name, etc. A simple way to do this in
PNG would be to invent new private chunks holding text. The
disadvantage of such an approach is that other applications would
have no idea what was in those chunks, and would simply ignore
...
... them. Instead, we recommend that textual information be stored in
standard tEXt chunks with suitable keywords. Use of tEXt tells
any PNG viewer that the chunk contains text that might be of
interest to a human user. Thus, a person looking at the file with
...
... character sets
other than Latin-1. We recognize that the need for other character
sets will increase. However, PNG already requires that
programmers implement a number of new and unfamiliar features, and
text representation is not PNG ...
... PNG already requires that
programmers implement a number of new and unfamiliar features, and
text representation is not PNG's primary purpose. Since PNG
provides for the creation and public registration ...
... programmers implement a number of new and unfamiliar features, and
text representation is not PNG's primary purpose. Since PNG
provides for the creation and public registration of new ancillary
...
...
The first eight bytes of a PNG file always contain the following
values:
...
...
This signature both identifies the file as a PNG file and provides
for immediate detection of common file-transfer problems. The
first two bytes distinguish PNG ...
... PNG file and provides
for immediate detection of common file-transfer problems. The
first two bytes distinguish PNG files on systems that expect the
first two bytes to identify the file type uniquely. The first
...
... byte is chosen as a non-ASCII value to reduce the probability that
a text file may be misrecognized as a PNG file; also, it catches
bad file transfers that clear bit ...
...
The chunk naming conventions allow safe, flexible extension of the
PNG format. This mechanism is much better than a format version
number, because it works on a feature-by-feature basis rather than
being an overall indicator. Decoders ...
... of the data for any private chunk type.
When a PNG file is modified, certain ancillary chunks may need to
be changed to reflect changes in other chunks. For example, a
histogram chunk needs to be changed if the image ...
...
(This appendix is not part of the formal PNG specification.)
It would be convenient for graphics ...
... requirement for boosted contrast (gamma) in dark surround
conditions is due to the way the human visual system works, and
applies equally well to computer monitors. Thus, a PNG viewer
trying to achieve the maximum realism for the images it displays
...
...
The file_gamma value, as defined above, is what goes in the gAMA
chunk in a PNG file. If file_gamma is not 1.0, we know that gamma
correction has been done on the sample values in the file, and we
could call them "gamma corrected" samples. However, since there
...
... responsible for making the overall gamma of the system equal to
the desired viewing_gamma, by selecting the decoding_gamma
appropriately. When displaying a PNG file, the gAMA chunk
provides the file_gamma value. The display_gamma may be known for
this machine, or it might be obtained from the system software, or
...
... (or its inverse, as required).
However, PNG does not provide a way to specify that an image uses
this exact transfer function; the gAMA chunk always assumes a pure
...
... closely approximates the transfer function. Thus, when writing a
PNG file with data obtained from digitizing the output of a modern
video camera, the gAMA chunk should contain 0.5 or 0.52, not 0.45.
...
... cameras are likely to be larger
than the difference between these functions.) The designers of
PNG deemed the simplicity and flexibility of a power-law
definition of gAMA to be more important than being able to
describe the SMPTE ...
...
(This appendix is not part of the formal PNG specification.)
About chromaticity
...
...
The cHRM chunk is used, together with the gAMA chunk, to convey
precise color information so that a PNG image can be displayed or
printed with better color fidelity than is possible without this
...
... information. The preceding chapters state how this information is
encoded in a PNG image. This tutorial briefly outlines the
underlying color theory for those who might not be familiar with
...
... thus proven in industrial use. Accurate, device-independent color
started to spread from high-end, specialized areas into the
mainstream during the late 1980s and early 1990s, and PNG takes
notice of that trend.
...
... values of each primary color and the CRT_gamma.
So why does PNG not store images in XYZ instead of RGB? Well, two
...
... that undemanding viewers can get by with simply displaying the
data without color correction. By storing calibrated RGB, PNG
retains compatibility with existing programs that expect RGB ...
... What can I do with it?
If a PNG file has the gAMA and cHRM chunks, the source_RGB values
can be converted to XYZ. This lets you:
...
...
(This appendix is not part of the formal PNG specification.)
This appendix gives the locations of some Internet ...
...
This appendix gives the locations of some Internet resources for PNG
software developers. By the nature of the Internet, the list is
...
... The latest released versions of this document and related
information can always be found at the PNG FTP archive site,
...
... archive site,
ftp://ftp.uu.net/graphics/png/. The PNG specification is
available in several formats, including HTML, plain text, and
...
... Electronic mail
The maintainers of the PNG specification can be contacted by e-
mail at png-info@uunet.uu.net or at png-group@w3.org.
...
...
There is a World Wide Web home page for PNG at
http://quest.jpl.nasa.gov/PNG/. This page is a central location
...
... http://quest.jpl.nasa.gov/PNG/ ...
... http://quest.jpl.nasa.gov/PNG/. This page is a central location
for current information about PNG and PNG-related tools.
...
... http://quest.jpl.nasa.gov/PNG/. This page is a central location
for current information about PNG and PNG-related tools.
...
...
(This appendix is not part of the formal PNG specification.)
The PNG format ...
... PNG specification.)
The PNG format has been frozen since the Ninth Draft of March 7,
1995, and all future changes are intended to be backwards compatible.
The revisions since the Ninth Draft are simply clarifications,
...
... improvements in presentation, and additions of supporting material.
On 1 October 1996, the PNG specification was approved as a W3C (World
Wide Web Consortium) Recommendation.
...
... * Added a "Creation Time" tEXt keyword
* Macintosh representation of PNG specified
* Added discussion of security issues ...
... PNG Group, "PNG Special-Purpose Public Chunks". Available in several formats from ftp://ftp.uu.net/graphics/png/documents/pngextensions.* ...
... PNG Group, "PNG Special-Purpose Public Chunks". Available in several formats from ftp://ftp.uu.net/graphics/png/documents/pngextensions.* ...
... The Adam7 interlacing scheme is not patented and it is not the
intention of the originator of that scheme to patent it. The
scheme may be freely used by all PNG implementations. The name
"Adam7" may be freely used to describe interlace method 1 of the
...
... "Adam7" may be freely used to describe interlace method 1 of the
PNG specification.
Trademarks
...
