On this page
Class ImageIO
- java.lang.Object
-
- javax.imageio.ImageIO
public final class ImageIO
extends Object
A class containing static convenience methods for locating ImageReader
s and ImageWriter
s, and performing simple encoding and decoding.
Methods
Modifier and Type | Method | Description |
---|---|---|
static ImageInputStream |
createImageInputStream(Object input) |
Returns an |
static ImageOutputStream |
createImageOutputStream(Object output) |
Returns an |
static File |
getCacheDirectory() |
Returns the current value set by |
static ImageReader |
getImageReader(ImageWriter writer) |
Returns an |
static Iterator<ImageReader> |
getImageReaders(Object input) |
Returns an |
static Iterator<ImageReader> |
getImageReadersByFormatName(String formatName) |
Returns an |
static Iterator<ImageReader> |
getImageReadersByMIMEType(String MIMEType) |
Returns an |
static Iterator<ImageReader> |
getImageReadersBySuffix(String fileSuffix) |
Returns an |
static Iterator<ImageTranscoder> |
getImageTranscoders(ImageReader reader, ImageWriter writer) |
Returns an |
static ImageWriter |
getImageWriter(ImageReader reader) |
Returns an |
static Iterator<ImageWriter> |
getImageWriters(ImageTypeSpecifier type, String formatName) |
Returns an |
static Iterator<ImageWriter> |
getImageWritersByFormatName(String formatName) |
Returns an |
static Iterator<ImageWriter> |
getImageWritersByMIMEType(String MIMEType) |
Returns an |
static Iterator<ImageWriter> |
getImageWritersBySuffix(String fileSuffix) |
Returns an |
static String[] |
getReaderFileSuffixes() |
Returns an array of |
static String[] |
getReaderFormatNames() |
Returns an array of |
static String[] |
getReaderMIMETypes() |
Returns an array of |
static boolean |
getUseCache() |
Returns the current value set by |
static String[] |
getWriterFileSuffixes() |
Returns an array of |
static String[] |
getWriterFormatNames() |
Returns an array of |
static String[] |
getWriterMIMETypes() |
Returns an array of |
static BufferedImage |
read(File input) |
Returns a |
static BufferedImage |
read(InputStream input) |
Returns a |
static BufferedImage |
read(URL input) |
Returns a |
static BufferedImage |
read(ImageInputStream stream) |
Returns a |
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 |
static void |
setCacheDirectory(File cacheDirectory) |
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 |
static boolean |
write(RenderedImage im, String formatName, File output) |
Writes an image using an arbitrary |
static boolean |
write(RenderedImage im, String formatName, OutputStream output) |
Writes an image using an arbitrary |
static boolean |
write(RenderedImage im, String formatName, ImageOutputStream output) |
Writes an image using the an arbitrary |
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods
scanForPlugins
public 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
.
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.
setUseCache
public static void setUseCache(boolean useCache)
Sets a flag indicating whether a disk-based cache file should be used when creating ImageInputStream
s and ImageOutputStream
s.
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
.
- Parameters:
useCache
- aboolean
indicating whether a cache file should be used, in cases where it is optional.- See Also:
-
getUseCache()
getUseCache
public static boolean getUseCache()
Returns the current value set by setUseCache
, or true
if no explicit setting has been made.
- Returns:
-
true if a disk-based cache may be used for
ImageInputStream
s andImageOutputStream
s. - See Also:
-
setUseCache(boolean)
setCacheDirectory
public static void setCacheDirectory(File cacheDirectory)
Sets the directory where cache files are to be created. A value of null
indicates that the system-dependent default temporary-file directory is to be used. If getUseCache
returns false, this value is ignored.
- Parameters:
cacheDirectory
- aFile
specifying a directory.- Throws:
SecurityException
- if the security manager denies access to the directory.IllegalArgumentException
- ifcacheDir
is non-null
but is not a directory.- See Also:
File.createTempFile(String, String, File)
,getCacheDirectory()
getCacheDirectory
public static File getCacheDirectory()
Returns the current value set by setCacheDirectory
, or null
if no explicit setting has been made.
- Returns:
-
a
File
indicating the directory where cache files will be created, ornull
to indicate the system-dependent default temporary-file directory. - See Also:
-
setCacheDirectory(java.io.File)
createImageInputStream
public static ImageInputStream createImageInputStream(Object input)
throws IOException
Returns an ImageInputStream
that will take its input from the given Object
. The set of ImageInputStreamSpi
s 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 getUseCache
and getCacheDirectory
will be used to control caching.
- Parameters:
input
- anObject
to be used as an input source, such as aFile
, readableRandomAccessFile
, orInputStream
.- Returns:
-
an
ImageInputStream
, ornull
. - Throws:
IllegalArgumentException
- ifinput
isnull
.IOException
- if a cache file is needed but cannot be created.- See Also:
-
ImageInputStreamSpi
createImageOutputStream
public static ImageOutputStream createImageOutputStream(Object output)
throws IOException
Returns an ImageOutputStream
that will send its output to the given Object
. The set of ImageOutputStreamSpi
s 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 getUseCache
and getCacheDirectory
will be used to control caching.
- Parameters:
output
- anObject
to be used as an output destination, such as aFile
, writableRandomAccessFile
, orOutputStream
.- Returns:
-
an
ImageOutputStream
, ornull
. - Throws:
IllegalArgumentException
- ifoutput
isnull
.IOException
- if a cache file is needed but cannot be created.- See Also:
-
ImageOutputStreamSpi
getReaderFormatNames
public static String[] getReaderFormatNames()
Returns an array of String
s listing all of the informal format names understood by the current set of registered readers.
- Returns:
-
an array of
String
s.
getReaderMIMETypes
public static String[] getReaderMIMETypes()
Returns an array of String
s listing all of the MIME types understood by the current set of registered readers.
- Returns:
-
an array of
String
s.
getReaderFileSuffixes
public static String[] getReaderFileSuffixes()
Returns an array of String
s listing all of the file suffixes associated with the formats understood by the current set of registered readers.
- Returns:
-
an array of
String
s. - Since:
- 1.6
getImageReaders
public static Iterator<ImageReader> getImageReaders(Object input)
Returns an Iterator
containing all currently registered ImageReader
s 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.
- Parameters:
input
- anImageInputStream
or otherObject
containing encoded image data.- Returns:
-
an
Iterator
containingImageReader
s. - Throws:
IllegalArgumentException
- ifinput
isnull
.- See Also:
-
ImageReaderSpi.canDecodeInput(java.lang.Object)
getImageReadersByFormatName
public static Iterator<ImageReader> getImageReadersByFormatName(String formatName)
Returns an Iterator
containing all currently registered ImageReader
s that claim to be able to decode the named format.
- Parameters:
formatName
- aString
containing the informal name of a format (e.g., "jpeg" or "tiff".- Returns:
-
an
Iterator
containingImageReader
s. - Throws:
IllegalArgumentException
- ifformatName
isnull
.- See Also:
-
ImageReaderWriterSpi.getFormatNames()
getImageReadersBySuffix
public static Iterator<ImageReader> getImageReadersBySuffix(String fileSuffix)
Returns an Iterator
containing all currently registered ImageReader
s that claim to be able to decode files with the given suffix.
- Parameters:
fileSuffix
- aString
containing a file suffix (e.g., "jpg" or "tiff").- Returns:
-
an
Iterator
containingImageReader
s. - Throws:
IllegalArgumentException
- iffileSuffix
isnull
.- See Also:
-
ImageReaderWriterSpi.getFileSuffixes()
getImageReadersByMIMEType
public static Iterator<ImageReader> getImageReadersByMIMEType(String MIMEType)
Returns an Iterator
containing all currently registered ImageReader
s that claim to be able to decode files with the given MIME type.
- Parameters:
MIMEType
- aString
containing a file suffix (e.g., "image/jpeg" or "image/x-bmp").- Returns:
-
an
Iterator
containingImageReader
s. - Throws:
IllegalArgumentException
- ifMIMEType
isnull
.- See Also:
-
ImageReaderWriterSpi.getMIMETypes()
getWriterFormatNames
public static String[] getWriterFormatNames()
Returns an array of String
s listing all of the informal format names understood by the current set of registered writers.
- Returns:
-
an array of
String
s.
getWriterMIMETypes
public static String[] getWriterMIMETypes()
Returns an array of String
s listing all of the MIME types understood by the current set of registered writers.
- Returns:
-
an array of
String
s.
getWriterFileSuffixes
public static String[] getWriterFileSuffixes()
Returns an array of String
s listing all of the file suffixes associated with the formats understood by the current set of registered writers.
- Returns:
-
an array of
String
s. - Since:
- 1.6
getImageWritersByFormatName
public static Iterator<ImageWriter> getImageWritersByFormatName(String formatName)
Returns an Iterator
containing all currently registered ImageWriter
s that claim to be able to encode the named format.
- Parameters:
formatName
- aString
containing the informal name of a format (e.g., "jpeg" or "tiff".- Returns:
-
an
Iterator
containingImageWriter
s. - Throws:
IllegalArgumentException
- ifformatName
isnull
.- See Also:
-
ImageReaderWriterSpi.getFormatNames()
getImageWritersBySuffix
public static Iterator<ImageWriter> getImageWritersBySuffix(String fileSuffix)
Returns an Iterator
containing all currently registered ImageWriter
s that claim to be able to encode files with the given suffix.
- Parameters:
fileSuffix
- aString
containing a file suffix (e.g., "jpg" or "tiff").- Returns:
-
an
Iterator
containingImageWriter
s. - Throws:
IllegalArgumentException
- iffileSuffix
isnull
.- See Also:
-
ImageReaderWriterSpi.getFileSuffixes()
getImageWritersByMIMEType
public static Iterator<ImageWriter> getImageWritersByMIMEType(String MIMEType)
Returns an Iterator
containing all currently registered ImageWriter
s that claim to be able to encode files with the given MIME type.
- Parameters:
MIMEType
- aString
containing a file suffix (e.g., "image/jpeg" or "image/x-bmp").- Returns:
-
an
Iterator
containingImageWriter
s. - Throws:
IllegalArgumentException
- ifMIMEType
isnull
.- See Also:
-
ImageReaderWriterSpi.getMIMETypes()
getImageWriter
public static ImageWriter getImageWriter(ImageReader reader)
Returns an ImageWriter
corresponding 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()
.
- Parameters:
reader
- an instance of a registeredImageReader
.- Returns:
-
an
ImageWriter
, or null. - Throws:
IllegalArgumentException
- ifreader
isnull
.- See Also:
getImageReader(ImageWriter)
,ImageReaderSpi.getImageWriterSpiNames()
getImageReader
public static ImageReader getImageReader(ImageWriter writer)
Returns an ImageReader
corresponding 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()
.
- Parameters:
writer
- an instance of a registeredImageWriter
.- Returns:
-
an
ImageReader
, or null. - Throws:
IllegalArgumentException
- ifwriter
isnull
.- See Also:
getImageWriter(ImageReader)
,ImageWriterSpi.getImageReaderSpiNames()
getImageWriters
public static Iterator<ImageWriter> getImageWriters(ImageTypeSpecifier type,
String formatName)
Returns an Iterator
containing all currently registered ImageWriter
s that claim to be able to encode images of the given layout (specified using an ImageTypeSpecifier
) in the given format.
- Parameters:
type
- anImageTypeSpecifier
indicating the layout of the image to be written.formatName
- the informal name of theformat
.- Returns:
-
an
Iterator
containingImageWriter
s. - Throws:
IllegalArgumentException
- if any parameter isnull
.- See Also:
-
ImageWriterSpi.canEncodeImage(ImageTypeSpecifier)
getImageTranscoders
public static Iterator<ImageTranscoder> getImageTranscoders(ImageReader reader,
ImageWriter writer)
Returns an Iterator
containing all currently registered ImageTranscoder
s that claim to be able to transcode between the metadata of the given ImageReader
and ImageWriter
.
- Parameters:
reader
- anImageReader
.writer
- anImageWriter
.- Returns:
-
an
Iterator
containingImageTranscoder
s. - Throws:
IllegalArgumentException
- ifreader
orwriter
isnull
.
read
public static BufferedImage read(File input)
throws IOException
Returns a 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 getUseCache
and 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 ImageReader
s that can read directly from a File
; that may be accomplished using IIORegistry
and ImageReaderSpi
.
- Parameters:
input
- aFile
to read from.- Returns:
-
a
BufferedImage
containing the decoded contents of the input, ornull
. - Throws:
IllegalArgumentException
- ifinput
isnull
.IOException
- if an error occurs during reading or when not able to create required ImageInputStream.
read
public static BufferedImage read(InputStream input)
throws IOException
Returns a 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 getUseCache
and getCacheDirectory
will be used to control caching in the ImageInputStream
that is created.
This method does not attempt to locate ImageReader
s 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.
- Parameters:
input
- anInputStream
to read from.- Returns:
-
a
BufferedImage
containing the decoded contents of the input, ornull
. - Throws:
IllegalArgumentException
- ifinput
isnull
.IOException
- if an error occurs during reading or when not able to create required ImageInputStream.
read
public static BufferedImage read(URL input)
throws IOException
Returns a 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 getUseCache
and getCacheDirectory
will be used to control caching in the ImageInputStream
that is created.
This method does not attempt to locate ImageReader
s that can read directly from a URL
; that may be accomplished using IIORegistry
and ImageReaderSpi
.
- Parameters:
input
- aURL
to read from.- Returns:
-
a
BufferedImage
containing the decoded contents of the input, ornull
. - Throws:
IllegalArgumentException
- ifinput
isnull
.IOException
- if an error occurs during reading or when not able to create required ImageInputStream.
read
public static BufferedImage read(ImageInputStream stream)
throws IOException
Returns a 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.
- Parameters:
stream
- anImageInputStream
to read from.- Returns:
-
a
BufferedImage
containing the decoded contents of the input, ornull
. - Throws:
IllegalArgumentException
- ifstream
isnull
.IOException
- if an error occurs during reading.
write
public static boolean write(RenderedImage im,
String formatName,
ImageOutputStream output)
throws IOException
Writes an image using the an arbitrary 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.
- Parameters:
im
- aRenderedImage
to be written.formatName
- aString
containing the informal name of the format.output
- anImageOutputStream
to be written to.- Returns:
false
if no appropriate writer is found.- Throws:
IllegalArgumentException
- if any parameter isnull
.IOException
- if an error occurs during writing.
write
public static boolean write(RenderedImage im,
String formatName,
File output)
throws IOException
Writes an image using an arbitrary ImageWriter
that supports the given format to a File
. If there is already a File
present, its contents are discarded.
- Parameters:
im
- aRenderedImage
to be written.formatName
- aString
containing the informal name of the format.output
- aFile
to be written to.- Returns:
false
if no appropriate writer is found.- Throws:
IllegalArgumentException
- if any parameter isnull
.IOException
- if an error occurs during writing or when not able to create required ImageOutputStream.
write
public static boolean write(RenderedImage im,
String formatName,
OutputStream output)
throws IOException
Writes an image using an arbitrary 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 getUseCache
and getCacheDirectory
will be used to control caching.
- Parameters:
im
- aRenderedImage
to be written.formatName
- aString
containing the informal name of the format.output
- anOutputStream
to be written to.- Returns:
false
if no appropriate writer is found.- Throws:
IllegalArgumentException
- if any parameter isnull
.IOException
- if an error occurs during writing or when not able to create required ImageOutputStream.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.desktop/javax/imageio/ImageIO.html