The main package of the Java Image I/O API.
Many common image I/O operations may be performed using the static
methods of the ImageIO
class.
This package contains the basic classes and interfaces for describing
the contents of image files, including metadata and thumbnails
(IIOImage
); for controlling the image reading process
(ImageReader
, ImageReadParam
, and
ImageTypeSpecifier
) and image writing process
(ImageWriter
and ImageWriteParam
); for
performing transcoding between formats (ImageTranscoder
),
and for reporting errors (IIOException
).
All implementations of javax.imageio provide the following standard
image format plug-ins:
Standard Plug-in Notes
ImageIO provides ImageReader
and ImageWriter
plug-ins for the
Graphics Interchange Format (GIF) image format.
These are the "standard" GIF plug-ins, meaning those that are included in the
JRE, as distinct from those included in standard extensions, or 3rd party
plug-ins. The following notes and metadata specification apply to the
standard plug-ins.
Writing GIF images
The GIF image writer plug-in guarantees lossless writing for images which meet
the following requirements:
- the number of bands is 1;
- the number of bits per sample is not greater than 8;
- the size of a color component is not greater than 8;
By default the GIF writer plug-in creates version "89a" images. This can be
changed to "87a" by explicitly setting the version in the
stream metadata (see
GIF Stream Metadata Format Specification).
The GIF writer plug-in supports the creation of animated GIF images through
the standard sequence writing methods defined in the
ImageWriter
class.
A global color table is written to the output stream if one of the
following conditions is met:
- stream metadata containing a GlobalColorTable element is
supplied;
- a sequence is being written and image metadata containing a
LocalColorTable element is supplied for the first image in the
sequence;
- image metadata is not supplied or does not contain a LocalColorTable
element.
In the first case the global color table in the stream metadata is
used, in the second the local color table in the image metadata is
used, and in the third a global color table is created from the
ColorModel or SampleModel of the (first) image.
A local color table is written to the output stream only if image
metadata containing a LocalColorTable element is supplied to the
writer, or no image metadata is supplied to the writer and the local
color table which would be generated from the image itself is not
equal to the global color table.
A Graphic Control Extension block is written to the output stream only
if image metadata containing a GraphicControlExtension element is
supplied to the writer, or no image metadata is supplied and the
local color table generated from the image requires a transparent
index. Application, Plain Text, and Comment Extension blocks are
written only if they are supplied to the writer via image metadata.
The writing of interlaced images can be controlled by the progressive
mode of the provided ImageWriteParam
instance.
If progressive mode is
MODE_DISABLED
then a non-interlaced image will be written. If
progressive mode is MODE_DEFAULT
then an interlaced image will
be written. If progressive mode is MODE_COPY_FROM_METADATA
, then
the metadata setting is used (if it is provided, otherwise an interlaced
image will be written).
The GIF image writer plug-in supports setting output stream metadata from
metadata supplied to the writer in either the native GIF stream
metadata format
javax_imageio_gif_stream_1.0 or the standard metadata format
javax_imageio_1.0, and setting
output image metadata from metadata supplied to the writer in either
the native GIF image metadata format
javax_imageio_gif_image_1.0 or the standard metadata format
javax_imageio_1.0.
The mapping of standard metadata format to the GIF native stream and
image metadata formats is given in the tables here .