<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>
<head>
<!--
Copyright (c) 2000, 2003, Oracle and/or its affiliates. All rights reserved.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.

This code is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 2 only, as
published by the Free Software Foundation.  Oracle designates this
particular file as subject to the "Classpath" exception as provided
by Oracle in the LICENSE file that accompanied this code.

This code is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
version 2 for more details (a copy is included in the LICENSE file that
accompanied this code).

You should have received a copy of the GNU General Public License version
2 along with this work; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.

Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
CA 95054 USA or visit www.sun.com if you need additional information or
have any questions.
-->

</head>

<body bgcolor="white">

A package of the Java Image I/O API dealing with reading and writing
metadata.

<p>

When reading an image, its per-stream and per-image metadata is made
available as an <code>IIOMetadata</code> object.  The internals of
this object are specific to the plug-in that created it.  Its contents
may be accessed in the form of an XML <code>Document</code>, which is
implemented as a tree of <code>IIOMetadataNode</code> objects.

<p>

When writing an image, its metadata may be set by defining or
modifying an <code>IIOMetadata</code> object.  Such an object may be
obtained from an <code>ImageWriter</code> or
<code>ImageTranscoder</code> (from the
<code>javax.imageio</code> package).  Once such an object has
been obtained, its contents may be set of modified via a
<code>Document</code> consisting of <code>IIOMetadataNode</code>s.
The document format may optionally be described using an
<code>IIOMetadataFormat</code> object.

<p>

The format of the metadata contained in the XML <code>Document</code>
is identified by a string which appears as the root node of the tree
of <code>IIOMetadataNode</code> objects.  This string contains a version
number, e.g. "javax_imageio_jpeg_image_1.0".  Readers and writers may
support multiple versions of the same basic format and the Image I/O
API has methods that allow specifying which version to use by passing
the string to the method/constructor used to obtain an <code>IIOMetadata</code>
object.  In some cases, a more recent version may not be strictly
compatible with a program written expecting an older version (for
an example, see the Native Metadata Format section of the JPEG Metadata
Usage Notes below).

<p>

Plug-ins may choose to support a <A
HREF="doc-files/standard_metadata.html">standard (plug-in neutral)
format</A>.  This format does not provide lossless encoding of
metadata, but allows a portion of the metadata to be accessed in a
generic manner.

<p>

Each of the standard plug-ins supports a so-called "native" metadata
format, which encodes its metadata losslessly:

<ul>
<li>
<A HREF="doc-files/gif_metadata.html">
GIF metadata
</A>

<li>
<A HREF="doc-files/jpeg_metadata.html">
JPEG metadata
</A>

<li>
<A HREF="doc-files/png_metadata.html">
PNG metadata
</A>

<li>
<A HREF="doc-files/bmp_metadata.html">
BMP metadata
</A>

<li>
<A HREF="doc-files/wbmp_metadata.html">
WBMP metadata
</A>

</ul>

@since 1.4

</body>
</html>
