public final class ImageIO extends Object
ImageReaders and
ImageWriters, and performing simple encoding and decoding.
| Modifier and Type | Method and Description |
|---|---|
static ImageInputStream |
createImageInputStream(Object
Returns an
ImageInputStream that will take its input from the given
Object.
|
static ImageOutputStream |
createImageOutputStream(Object
Returns an
ImageOutputStream that will send its output to the given
Object.
|
static File |
getCacheDirectory()
Returns the current value set by
setCacheDirectory, or
null if no explicit setting has been made.
|
static ImageReader |
getImageReader(ImageWriter
Returns an
ImageReadercorresponding to the given
ImageWriter, if there is one, or
null if the plug-in for this
ImageWriter does not specify a corresponding
ImageReader, or if the given
ImageWriter is not registered.
|
static Iterator |
getImageReaders(Object
Returns an
Iterator containing all currently registered
ImageReaders that claim to be able to decode the supplied
Object, typically an
ImageInputStream.
|
static Iterator |
getImageReadersByFormatName(String
Returns an
Iterator containing all currently registered
ImageReaders that claim to be able to decode the named format.
|
static Iterator |
getImageReadersByMIMEType(String
Returns an
Iterator containing all currently registered
ImageReaders that claim to be able to decode files with the given MIME type.
|
static Iterator |
getImageReadersBySuffix(String
Returns an
Iterator containing all currently registered
ImageReaders that claim to be able to decode files with the given suffix.
|
static Iterator |
getImageTranscoders(ImageReader
Returns an
Iterator containing all currently registered
ImageTranscoders that claim to be able to transcode between the metadata of the given
ImageReader and
ImageWriter.
|
static ImageWriter |
getImageWriter(ImageReader
Returns an
ImageWritercorresponding to the given
ImageReader, if there is one, or
null if the plug-in for this
ImageReader does not specify a corresponding
ImageWriter, or if the given
ImageReader is not registered.
|
static Iterator |
getImageWriters(ImageTypeSpecifier
Returns an
Iterator containing all currently registered
ImageWriters that claim to be able to encode images of the given layout (specified using an
ImageTypeSpecifier) in the given format.
|
static Iterator |
getImageWritersByFormatName(String
Returns an
Iterator containing all currently registered
ImageWriters that claim to be able to encode the named format.
|
static Iterator |
getImageWritersByMIMEType(String
Returns an
Iterator containing all currently registered
ImageWriters that claim to be able to encode files with the given MIME type.
|
static Iterator |
getImageWritersBySuffix(String
Returns an
Iterator containing all currently registered
ImageWriters that claim to be able to encode files with the given suffix.
|
static String |
getReaderFileSuffixes()
Returns an array of
Strings listing all of the file suffixes associated with the formats understood by the current set of registered readers.
|
static String |
getReaderFormatNames()
Returns an array of
Strings listing all of the informal format names understood by the current set of registered readers.
|
static String |
getReaderMIMETypes()
Returns an array of
Strings listing all of the MIME types understood by the current set of registered readers.
|
static boolean |
getUseCache()
Returns the current value set by
setUseCache, or
true if no explicit setting has been made.
|
static String |
getWriterFileSuffixes()
Returns an array of
Strings listing all of the file suffixes associated with the formats understood by the current set of registered writers.
|
static String |
getWriterFormatNames()
Returns an array of
Strings listing all of the informal format names understood by the current set of registered writers.
|
static String |
getWriterMIMETypes()
Returns an array of
Strings listing all of the MIME types understood by the current set of registered writers.
|
static BufferedImage |
read(File
Returns a
BufferedImage as the result of decoding a supplied
File with an
ImageReader chosen automatically from among those currently registered.
|
static BufferedImage |
read(ImageInputStream
Returns a
BufferedImage as the result of decoding a supplied
ImageInputStream with an
ImageReader chosen automatically from among those currently registered.
|
static BufferedImage |
read(InputStream
Returns a
BufferedImage as the result of decoding a supplied
InputStream with an
ImageReader chosen automatically from among those currently registered.
|
static BufferedImage |
read(URL
Returns a
BufferedImage as the result of decoding a supplied
URL with an
ImageReader chosen automatically from among those currently registered.
|
static void |
scanForPlugins()
Scans for plug-ins on the application class path, loads their service provider classes, and registers a service provider instance for each one found with the
IIORegistry.
|
static void |
setCacheDirectory(File
Sets the directory where cache files are to be created.
|
static void |
setUseCache(boolean useCache)
Sets a flag indicating whether a disk-based cache file should be used when creating
ImageInputStreams and
ImageOutputStreams.
|
static boolean |
write(RenderedImage
Writes an image using an arbitrary
ImageWriter that supports the given format to a
File.
|
static boolean |
write(RenderedImage
Writes an image using the an arbitrary
ImageWriter that supports the given format to an
ImageOutputStream.
|
static boolean |
write(RenderedImage
Writes an image using an arbitrary
ImageWriter that supports the given format to an
OutputStream.
|
public static void scanForPlugins()
IIORegistry.
This method is needed because the application class path can theoretically change, or additional plug-ins may become available. Rather than re-scanning the classpath on every invocation of the API, the class path is scanned automatically only on the first invocation. Clients can call this method to prompt a re-scan. Thus this method need only be invoked by sophisticated applications which dynamically make new plug-ins available at runtime.
The getResources method of the context ClassLoader is used locate JAR files containing files named META-INF/services/javax.imageio.spi.classname, where classname is one of ImageReaderSpi, ImageWriterSpi, ImageTranscoderSpi, ImageInputStreamSpi, or ImageOutputStreamSpi, along the application class path.
The contents of the located files indicate the names of actual implementation classes which implement the aforementioned service provider interfaces; the default class loader is then used to load each of these classes and to instantiate an instance of each class, which is then placed into the registry for later retrieval.
The exact set of locations searched depends on the implementation of the Java runtime environment.
public static void setUseCache(boolean useCache)
ImageInputStreams and
ImageOutputStreams.
When reading from a standard InputStream, it may be necessary to save previously read information in a cache since the underlying stream does not allow data to be re-read. Similarly, when writing to a standard OutputStream, a cache may be used to allow a previously written value to be changed before flushing it to the final destination.
The cache may reside in main memory or on disk. Setting this flag to false disallows the use of disk for future streams, which may be advantageous when working with small images, as the overhead of creating and destroying files is removed.
On startup, the value is set to true.
useCache - a
boolean indicating whether a cache file should be used, in cases where it is optional.
getUseCache()
public static boolean getUseCache()
setUseCache, or
true if no explicit setting has been made.
ImageInputStreams and
ImageOutputStreams.
setUseCache(boolean)
public static void setCacheDirectory(FilecacheDirectory)
null indicates that the system-dependent default temporary-file directory is to be used. If
getUseCache returns false, this value is ignored.
cacheDirectory - a
File specifying a directory.
SecurityException - if the security manager denies access to the directory.
IllegalArgumentException - if
cacheDir is non-
null but is not a directory.
File.createTempFile(String, String, File) ,
getCacheDirectory()
public static FilegetCacheDirectory()
setCacheDirectory, or
null if no explicit setting has been made.
File indicating the directory where cache files will be created, or
null to indicate the system-dependent default temporary-file directory.
setCacheDirectory(java.io.File)
public static ImageInputStreamcreateImageInputStream(Object input) throws IOException
ImageInputStream that will take its input from the given
Object. The set of
ImageInputStreamSpis registered with the
IIORegistry class is queried and the first one that is able to take input from the supplied object is used to create the returned
ImageInputStream. If no suitable
ImageInputStreamSpi exists,
null is returned.
The current cache settings from getUseCacheand getCacheDirectory will be used to control caching.
input - an
Object to be used as an input source, such as a
File, readable
RandomAccessFile, or
InputStream.
ImageInputStream, or
null.
IllegalArgumentException - if
input is
null.
IOException - if a cache file is needed but cannot be created.
ImageInputStreamSpi
public static ImageOutputStreamcreateImageOutputStream(Object output) throws IOException
ImageOutputStream that will send its output to the given
Object. The set of
ImageOutputStreamSpis registered with the
IIORegistry class is queried and the first one that is able to send output from the supplied object is used to create the returned
ImageOutputStream. If no suitable
ImageOutputStreamSpi exists,
null is returned.
The current cache settings from getUseCacheand getCacheDirectory will be used to control caching.
output - an
Object to be used as an output destination, such as a
File, writable
RandomAccessFile, or
OutputStream.
ImageOutputStream, or
null.
IllegalArgumentException - if
output is
null.
IOException - if a cache file is needed but cannot be created.
ImageOutputStreamSpi
public static String[] getReaderFormatNames()
Strings listing all of the informal format names understood by the current set of registered readers.
Strings.
public static String[] getReaderMIMETypes()
Strings listing all of the MIME types understood by the current set of registered readers.
Strings.
public static String[] getReaderFileSuffixes()
Strings listing all of the file suffixes associated with the formats understood by the current set of registered readers.
Strings.
public static Iterator<ImageReader > getImageReaders(Object input)
Iterator containing all currently registered
ImageReaders that claim to be able to decode the supplied
Object, typically an
ImageInputStream.
The stream position is left at its prior position upon exit from this method.
input - an
ImageInputStream or other
Object containing encoded image data.
Iterator containing
ImageReaders.
IllegalArgumentException - if
input is
null.
ImageReaderSpi.canDecodeInput(java.lang.Object)
public static Iterator<ImageReader > getImageReadersByFormatName(String formatName)
Iterator containing all currently registered
ImageReaders that claim to be able to decode the named format.
formatName - a
String containing the informal name of a format (
e.g., "jpeg" or "tiff".
Iterator containing
ImageReaders.
IllegalArgumentException - if
formatName is
null.
ImageReaderWriterSpi.getFormatNames()
public static Iterator<ImageReader > getImageReadersBySuffix(String fileSuffix)
Iterator containing all currently registered
ImageReaders that claim to be able to decode files with the given suffix.
fileSuffix - a
String containing a file suffix (
e.g., "jpg" or "tiff").
Iterator containing
ImageReaders.
IllegalArgumentException - if
fileSuffix is
null.
ImageReaderWriterSpi.getFileSuffixes()
public static Iterator<ImageReader > getImageReadersByMIMEType(String MIMEType)
Iterator containing all currently registered
ImageReaders that claim to be able to decode files with the given MIME type.
MIMEType - a
String containing a file suffix (
e.g., "image/jpeg" or "image/x-bmp").
Iterator containing
ImageReaders.
IllegalArgumentException - if
MIMEType is
null.
ImageReaderWriterSpi.getMIMETypes()
public static String[] getWriterFormatNames()
Strings listing all of the informal format names understood by the current set of registered writers.
Strings.
public static String[] getWriterMIMETypes()
Strings listing all of the MIME types understood by the current set of registered writers.
Strings.
public static String[] getWriterFileSuffixes()
Strings listing all of the file suffixes associated with the formats understood by the current set of registered writers.
Strings.
public static Iterator<ImageWriter > getImageWritersByFormatName(String formatName)
Iterator containing all currently registered
ImageWriters that claim to be able to encode the named format.
formatName - a
String containing the informal name of a format (
e.g., "jpeg" or "tiff".
Iterator containing
ImageWriters.
IllegalArgumentException - if
formatName is
null.
ImageReaderWriterSpi.getFormatNames()
public static Iterator<ImageWriter > getImageWritersBySuffix(String fileSuffix)
Iterator containing all currently registered
ImageWriters that claim to be able to encode files with the given suffix.
fileSuffix - a
String containing a file suffix (
e.g., "jpg" or "tiff").
Iterator containing
ImageWriters.
IllegalArgumentException - if
fileSuffix is
null.
ImageReaderWriterSpi.getFileSuffixes()
public static Iterator<ImageWriter > getImageWritersByMIMEType(String MIMEType)
Iterator containing all currently registered
ImageWriters that claim to be able to encode files with the given MIME type.
MIMEType - a
String containing a file suffix (
e.g., "image/jpeg" or "image/x-bmp").
Iterator containing
ImageWriters.
IllegalArgumentException - if
MIMEType is
null.
ImageReaderWriterSpi.getMIMETypes()
public static ImageWritergetImageWriter(ImageReader reader)
ImageWritercorresponding to the given
ImageReader, if there is one, or
null if the plug-in for this
ImageReader does not specify a corresponding
ImageWriter, or if the given
ImageReader is not registered. This mechanism may be used to obtain an
ImageWriter that will understand the internal structure of non-pixel metadata (as encoded by
IIOMetadata objects) generated by the
ImageReader. By obtaining this data from the
ImageReader and passing it on to the
ImageWriter obtained with this method, a client program can read an image, modify it in some way, and write it back out preserving all metadata, without having to understand anything about the structure of the metadata, or even about the image format. Note that this method returns the "preferred" writer, which is the first in the list returned by
javax.imageio.spi.ImageReaderSpi.getImageWriterSpiNames().
reader - an instance of a registered
ImageReader.
ImageWriter, or null.
IllegalArgumentException - if
reader is
null.
getImageReader(ImageWriter),
ImageReaderSpi.getImageWriterSpiNames()
public static ImageReadergetImageReader(ImageWriter writer)
ImageReadercorresponding to the given
ImageWriter, if there is one, or
null if the plug-in for this
ImageWriter does not specify a corresponding
ImageReader, or if the given
ImageWriter is not registered. This method is provided principally for symmetry with
getImageWriter(ImageReader). Note that this method returns the "preferred" reader, which is the first in the list returned by javax.imageio.spi.ImageWriterSpi.
getImageReaderSpiNames().
writer - an instance of a registered
ImageWriter.
ImageReader, or null.
IllegalArgumentException - if
writer is
null.
getImageWriter(ImageReader),
ImageWriterSpi.getImageReaderSpiNames()
public static Iterator<ImageWriter > getImageWriters(ImageTypeSpecifier type, String formatName)
Iterator containing all currently registered
ImageWriters that claim to be able to encode images of the given layout (specified using an
ImageTypeSpecifier) in the given format.
type - an
ImageTypeSpecifier indicating the layout of the image to be written.
formatName - the informal name of the
format.
Iterator containing
ImageWriters.
IllegalArgumentException - if any parameter is
null.
ImageWriterSpi.canEncodeImage(ImageTypeSpecifier)
public static Iterator<ImageTranscoder > getImageTranscoders(ImageReader reader, ImageWriter writer)
Iterator containing all currently registered
ImageTranscoders that claim to be able to transcode between the metadata of the given
ImageReader and
ImageWriter.
reader - an
ImageReader.
writer - an
ImageWriter.
Iterator containing
ImageTranscoders.
IllegalArgumentException - if
reader or
writer is
null.
public static BufferedImageread(File input) throws IOException
BufferedImage as the result of decoding a supplied
File with an
ImageReader chosen automatically from among those currently registered. The
File is wrapped in an
ImageInputStream. If no registered
ImageReader claims to be able to read the resulting stream,
null is returned.
The current cache settings from getUseCacheand getCacheDirectory will be used to control caching in the ImageInputStream that is created.
Note that there is no read method that takes a filename as a String; use this method instead after creating a File from the filename.
This method does not attempt to locate ImageReaders that can read directly from a File; that may be accomplished using IIORegistry and ImageReaderSpi.
input - a
File to read from.
BufferedImage containing the decoded contents of the input, or
null.
IllegalArgumentException - if
input is
null.
IOException - if an error occurs during reading.
public static BufferedImageread(InputStream input) throws IOException
BufferedImage as the result of decoding a supplied
InputStream with an
ImageReader chosen automatically from among those currently registered. The
InputStream is wrapped in an
ImageInputStream. If no registered
ImageReader claims to be able to read the resulting stream,
null is returned.
The current cache settings from getUseCacheand getCacheDirectory will be used to control caching in the ImageInputStream that is created.
This method does not attempt to locate ImageReaders that can read directly from an InputStream; that may be accomplished using IIORegistry and ImageReaderSpi.
This method does not close the provided InputStream after the read operation has completed; it is the responsibility of the caller to close the stream, if desired.
input - an
InputStream to read from.
BufferedImage containing the decoded contents of the input, or
null.
IllegalArgumentException - if
input is
null.
IOException - if an error occurs during reading.
public static BufferedImageread(URL input) throws IOException
BufferedImage as the result of decoding a supplied
URL with an
ImageReader chosen automatically from among those currently registered. An
InputStream is obtained from the
URL, which is wrapped in an
ImageInputStream. If no registered
ImageReader claims to be able to read the resulting stream,
null is returned.
The current cache settings from getUseCacheand getCacheDirectory will be used to control caching in the ImageInputStream that is created.
This method does not attempt to locate ImageReaders that can read directly from a URL; that may be accomplished using IIORegistry and ImageReaderSpi.
input - a
URL to read from.
BufferedImage containing the decoded contents of the input, or
null.
IllegalArgumentException - if
input is
null.
IOException - if an error occurs during reading.
public static BufferedImageread(ImageInputStream stream) throws IOException
BufferedImage as the result of decoding a supplied
ImageInputStream with an
ImageReader chosen automatically from among those currently registered. If no registered
ImageReader claims to be able to read the stream,
null is returned.
Unlike most other methods in this class, this method does close the provided ImageInputStream after the read operation has completed, unless null is returned, in which case this method does not close the stream.
stream - an
ImageInputStream to read from.
BufferedImage containing the decoded contents of the input, or
null.
IllegalArgumentException - if
stream is
null.
IOException - if an error occurs during reading.
public static boolean write(RenderedImageim, String formatName, ImageOutputStream output) throws IOException
ImageWriter that supports the given format to an
ImageOutputStream. The image is written to the
ImageOutputStream starting at the current stream pointer, overwriting existing stream data from that point forward, if present.
This method does not close the provided ImageOutputStream after the write operation has completed; it is the responsibility of the caller to close the stream, if desired.
im - a
RenderedImage to be written.
formatName - a
String containing the informal name of the format.
output - an
ImageOutputStream to be written to.
false if no appropriate writer is found.
IllegalArgumentException - if any parameter is
null.
IOException - if an error occurs during writing.
public static boolean write(RenderedImageim, String formatName, File output) throws IOException
ImageWriter that supports the given format to a
File. If there is already a
File present, its contents are discarded.
im - a
RenderedImage to be written.
formatName - a
String containing the informal name of the format.
output - a
File to be written to.
false if no appropriate writer is found.
IllegalArgumentException - if any parameter is
null.
IOException - if an error occurs during writing.
public static boolean write(RenderedImageim, String formatName, OutputStream output) throws IOException
ImageWriter that supports the given format to an
OutputStream.
This method does not close the provided OutputStream after the write operation has completed; it is the responsibility of the caller to close the stream, if desired.
The current cache settings from getUseCacheand getCacheDirectory will be used to control caching.
im - a
RenderedImage to be written.
formatName - a
String containing the informal name of the format.
output - an
OutputStream to be written to.
false if no appropriate writer is found.
IllegalArgumentException - if any parameter is
null.
IOException - if an error occurs during writing.