ImageReader
和ImageWriter
,以及执行简单编码和解码的静态便利方法的类。
-
Method Summary
Modifier and TypeMethodDescriptionstatic ImageInputStream
createImageInputStream
(Object input) 返回一个ImageInputStream
,它将从给定的Object
获取输入。static ImageOutputStream
createImageOutputStream
(Object output) 返回一个ImageOutputStream
,它将输出发送到给定的Object
。static File
返回由setCacheDirectory
设置的当前值,如果没有明确设置,则返回null
。static ImageReader
getImageReader
(ImageWriter writer) 返回与给定的ImageWriter
对应的ImageReader
,如果存在,则返回该ImageReader
,如果此ImageWriter
的插件未指定相应的ImageReader
,或者给定的ImageWriter
未注册,则返回null
。static Iterator
<ImageReader> getImageReaders
(Object input) 返回一个包含所有当前注册的ImageReader
的Iterator
,这些ImageReader
声称能够解码提供的Object
,通常是ImageInputStream
。static Iterator
<ImageReader> getImageReadersByFormatName
(String formatName) 返回一个包含所有当前注册的声称能够解码指定格式的ImageReader
的Iterator
。static Iterator
<ImageReader> getImageReadersByMIMEType
(String MIMEType) 返回一个包含所有当前注册的声称能够解码具有给定MIME类型的文件的ImageReader
的Iterator
。static Iterator
<ImageReader> getImageReadersBySuffix
(String fileSuffix) 返回一个包含所有当前注册的声称能够解码具有给定后缀的文件的ImageReader
的Iterator
。static Iterator
<ImageTranscoder> getImageTranscoders
(ImageReader reader, ImageWriter writer) 返回一个包含所有当前注册的声称能够在给定ImageReader
和ImageWriter
的元数据之间进行转码的ImageTranscoder
的Iterator
。static ImageWriter
getImageWriter
(ImageReader reader) 返回与给定的ImageReader
对应的ImageWriter
,如果存在,则返回该ImageWriter
,如果此ImageReader
的插件未指定相应的ImageWriter
,或者给定的ImageReader
未注册,则返回null
。static Iterator
<ImageWriter> getImageWriters
(ImageTypeSpecifier type, String formatName) 返回一个包含所有当前注册的声称能够以给定格式(使用ImageTypeSpecifier
指定)编码图像的ImageWriter
的Iterator
。static Iterator
<ImageWriter> getImageWritersByFormatName
(String formatName) 返回一个包含所有当前注册的声称能够编码指定格式的文件的ImageWriter
的Iterator
。static Iterator
<ImageWriter> getImageWritersByMIMEType
(String MIMEType) 返回一个包含所有当前注册的声称能够编码具有给定MIME类型的文件的ImageWriter
的Iterator
。static Iterator
<ImageWriter> getImageWritersBySuffix
(String fileSuffix) 返回一个包含所有当前注册的声称能够编码具有给定后缀的文件的ImageWriter
的Iterator
。static String[]
返回一个String
数组,列出当前注册的读取器了解的格式相关的所有文件后缀。static String[]
返回一个String
数组,列出当前注册的读取器了解的所有非正式格式名称。static String[]
返回一个String
数组,列出当前注册的读取器了解的所有MIME类型。static boolean
返回由setUseCache
设置的当前值,如果没有明确设置,则返回true
。static String[]
返回一个String
数组,列出当前注册的写入器了解的格式相关的所有文件后缀。static String[]
返回一个String
数组,列出当前注册的写入器了解的所有非正式格式名称。static String[]
返回一个String
数组,列出当前注册的写入器了解的所有MIME类型。static BufferedImage
返回一个BufferedImage
,作为从当前注册的读取器中自动选择的ImageReader
解码提供的File
的结果。static BufferedImage
read
(InputStream input) 返回一个BufferedImage
,作为从当前注册的读取器中自动选择的ImageReader
解码提供的InputStream
的结果。static BufferedImage
返回一个BufferedImage
,作为从当前注册的读取器中自动选择的ImageReader
解码提供的URL
的结果。static BufferedImage
read
(ImageInputStream stream) 返回一个BufferedImage
,作为从当前注册的读取器中自动选择的ImageReader
解码提供的ImageInputStream
的结果。static void
在应用程序类路径上扫描插件,加载其服务提供程序类,并为每个找到的实例在IIORegistry
中注册一个服务提供程序实例。static void
setCacheDirectory
(File cacheDirectory) 设置要创建缓存文件的目录。static void
setUseCache
(boolean useCache) 设置一个标志,指示在创建ImageInputStream
和ImageOutputStream
时是否应使用基于磁盘的缓存文件。static boolean
write
(RenderedImage im, String formatName, File output) 使用支持给定格式的任意ImageWriter
将图像写入File
。static boolean
write
(RenderedImage im, String formatName, OutputStream output) 使用支持给定格式的任意ImageWriter
将图像写入OutputStream
。static boolean
write
(RenderedImage im, String formatName, ImageOutputStream output) 使用支持给定格式的任意ImageWriter
将图像写入ImageOutputStream
。
-
Method Details
-
scanForPlugins
public static void scanForPlugins()在应用程序类路径上扫描插件,加载其服务提供程序类,并为每个找到的实例在IIORegistry
中注册一个服务提供程序实例。此方法是必需的,因为应用程序类路径理论上可以更改,或者可能会有其他插件可用。与在每次调用API时重新扫描类路径不同,类路径仅在第一次调用时自动扫描。客户端可以调用此方法以提示重新扫描。因此,此方法只需要由在运行时动态提供新插件的复杂应用程序调用。
上下文
ClassLoader
的getResources
方法用于定位包含文件名为META-INF/services/javax.imageio.spi.
classname的JAR文件,其中classname是ImageReaderSpi
、ImageWriterSpi
、ImageTranscoderSpi
、ImageInputStreamSpi
或ImageOutputStreamSpi
之一,沿着应用程序类路径。定位文件的内容指示实现上述服务提供程序接口的实际实现类的名称;然后使用默认类加载器加载这些类中的每一个,并实例化每个类的实例,然后将其放入注册表以供以后检索。
搜索的确切位置集取决于Java运行时环境的实现。
- 参见:
-
setUseCache
public static void setUseCache(boolean useCache) 设置一个标志,指示在创建ImageInputStream
和ImageOutputStream
时是否应使用基于磁盘的缓存文件。当从标准
InputStream
读取时,可能需要将先前读取的信息保存在缓存中,因为底层流不允许重新读取数据。类似地,当写入标准OutputStream
时,可以使用缓存来允许在将其刷新到最终目的地之前更改先前写入的值。缓存可以驻留在主内存或磁盘上。将此标志设置为
false
将禁止将来的流使用磁盘,这在处理小图像时可能是有利的,因为消除了创建和销毁文件的开销。在启动时,该值设置为
true
。- 参数:
-
useCache
- 一个boolean
,指示在可选情况下是否应使用缓存文件。 - 参见:
-
getUseCache
public static boolean getUseCache()返回由setUseCache
设置的当前值,如果没有明确设置,则返回true
。- 返回:
-
如果可以为
ImageInputStream
和ImageOutputStream
使用基于磁盘的缓存,则返回true
。 - 参见:
-
setCacheDirectory
设置要创建缓存文件的目录。如果值为null
,则表示将使用系统相关的默认临时文件目录。如果getUseCache
返回false,则忽略此值。- 参数:
-
cacheDirectory
- 指定目录的File
。 - 抛出:
-
SecurityException
- 如果安全管理器拒绝访问该目录。 -
IllegalArgumentException
- 如果cacheDir
为非null
但不是目录。 - 参见:
-
getCacheDirectory
返回由setCacheDirectory
设置的当前值,如果没有明确设置,则返回null
。- 返回:
-
一个
File
,指示将创建缓存文件的目录,或null
以指示使用系统相关的默认临时文件目录。 - 参见:
-
createImageInputStream
返回一个ImageInputStream
,它将从给定的Object
获取输入。查询已注册到IIORegistry
类的ImageInputStreamSpi
集合,并使用能够从提供的对象获取输入的第一个ImageInputStreamSpi
来创建返回的ImageInputStream
。如果没有合适的ImageInputStreamSpi
存在,则返回null
。将使用
getUseCache
和getCacheDirectory
的当前缓存设置来控制缓存。- 参数:
-
input
- 用作输入源的Object
,例如File
,可读的RandomAccessFile
或InputStream
。 - 返回:
-
一个
ImageInputStream
,或null
。 - 抛出:
-
IllegalArgumentException
- 如果input
为null
。 -
IOException
- 如果需要缓存文件但无法创建。 - 参见:
-
createImageOutputStream
返回一个ImageOutputStream
,将其输出发送到给定的Object
。查询注册到IIORegistry
类的ImageOutputStreamSpi
集合,并使用能够从提供的对象发送输出的第一个ImageOutputStreamSpi
来创建返回的ImageOutputStream
。如果没有合适的ImageOutputStreamSpi
存在,则返回null
。当前的缓存设置从
getUseCache
和getCacheDirectory
将用于控制缓存。- 参数:
-
output
- 用作输出目的地的Object
,例如File
,可写的RandomAccessFile
或OutputStream
。 - 返回:
-
一个
ImageOutputStream
,或null
。 - 抛出:
-
IllegalArgumentException
- 如果output
为null
。 -
IOException
- 如果需要缓存文件但无法创建。 - 参见:
-
getReaderFormatNames
返回一个String
数组,列出当前注册的所有读取器了解的所有非正式格式名称。- 返回:
-
一个
String
数组。
-
getReaderMIMETypes
返回一个String
数组,列出当前注册的所有读取器了解的所有MIME类型。- 返回:
-
一个
String
数组。
-
getReaderFileSuffixes
返回一个String
数组,列出当前注册的所有读取器了解的与格式相关联的所有文件后缀。- 返回:
-
一个
String
数组。 - 自:
- 1.6
-
getImageReaders
返回一个包含所有当前注册的ImageReader
的Iterator
,它们声称能够解码提供的Object
,通常是一个ImageInputStream
。退出此方法时,流位置保持在先前位置。
- 参数:
-
input
- 一个ImageInputStream
或其他包含编码图像数据的Object
。 - 返回:
-
一个包含
ImageReader
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果input
为null
。 - 参见:
-
getImageReadersByFormatName
返回一个包含所有当前注册的ImageReader
的Iterator
,它们声称能够解码指定格式的文件。- 参数:
-
formatName
- 包含格式的非正式名称的String
(例如,"jpeg"或"tiff")。 - 返回:
-
一个包含
ImageReader
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果formatName
为null
。 - 参见:
-
getImageReadersBySuffix
返回一个包含所有当前注册的ImageReader
的Iterator
,它们声称能够解码具有给定后缀的文件。- 参数:
-
fileSuffix
- 包含文件后缀的String
(例如,"jpg"或"tiff")。 - 返回:
-
一个包含
ImageReader
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果fileSuffix
为null
。 - 参见:
-
getImageReadersByMIMEType
返回一个包含所有当前注册的ImageReader
的Iterator
,它们声称能够解码具有给定MIME类型的文件。- 参数:
-
MIMEType
- 包含文件后缀的String
(例如,"image/jpeg"或"image/x-bmp")。 - 返回:
-
一个包含
ImageReader
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果MIMEType
为null
。 - 参见:
-
getWriterFormatNames
返回一个String
数组,列出当前注册的所有写入器了解的所有非正式格式名称。- 返回:
-
一个
String
数组。
-
getWriterMIMETypes
返回一个String
数组,列出当前注册的所有写入器了解的所有MIME类型。- 返回:
-
一个
String
数组。
-
getWriterFileSuffixes
返回一个String
数组,列出当前注册的所有写入器了解的与格式相关联的所有文件后缀。- 返回:
-
一个
String
数组。 - 自:
- 1.6
-
getImageWritersByFormatName
返回一个包含所有当前注册的ImageWriter
的Iterator
,它们声称能够编码指定格式的文件。- 参数:
-
formatName
- 包含格式的非正式名称的String
(例如,"jpeg"或"tiff")。 - 返回:
-
一个包含
ImageWriter
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果formatName
为null
。 - 参见:
-
getImageWritersBySuffix
返回一个包含所有当前注册的ImageWriter
的Iterator
,它们声称能够编码具有给定后缀的文件。- 参数:
-
fileSuffix
- 包含文件后缀的String
(例如,"jpg"或"tiff")。 - 返回:
-
一个包含
ImageWriter
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果fileSuffix
为null
。 - 参见:
-
getImageWritersByMIMEType
返回一个包含所有当前注册的ImageWriter
的Iterator
,它们声称能够编码具有给定MIME类型的文件。- 参数:
-
MIMEType
- 包含文件后缀的String
(例如,"image/jpeg"或"image/x-bmp")。 - 返回:
-
一个包含
ImageWriter
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果MIMEType
为null
。 - 参见:
-
getImageWriter
返回一个ImageWriter
,对应于给定的ImageReader
,如果存在的话,或者如果此ImageReader
的插件未指定相应的ImageWriter
,或者给定的ImageReader
未注册,则返回null
。通过从ImageReader
获取此数据并将其传递给使用此方法获取的ImageWriter
,客户端程序可以读取图像,以某种方式修改它,并将其写回,保留所有元数据,而无需了解元数据的结构,甚至了解图像格式。请注意,此方法返回“首选”写入器,即javax.imageio.spi.ImageReaderSpi.getImageWriterSpiNames()
返回的列表中的第一个写入器。- 参数:
-
reader
- 已注册的ImageReader
的实例。 - 返回:
-
一个
ImageWriter
,或者为null。 - 抛出:
-
IllegalArgumentException
- 如果reader
为null
。 - 参见:
-
getImageReader
返回与给定ImageWriter
对应的ImageReader
,如果有的话,如果此ImageWriter
的插件未指定相应的ImageReader
,或者给定的ImageWriter
未注册,则返回null
。此方法主要是为了与getImageWriter(ImageReader)
对称而提供的。请注意,此方法返回“首选”读取器,即由javax.imageio.spi.ImageWriterSpi.getImageReaderSpiNames()
返回的列表中的第一个。- 参数:
-
writer
- 已注册的ImageWriter
的实例。 - 返回:
-
一个
ImageReader
,或者为null。 - 抛出:
-
IllegalArgumentException
- 如果writer
为null
。 - 参见:
-
getImageWriters
返回一个包含所有当前注册的声称能够在给定格式中使用ImageTypeSpecifier
指定的布局编码图像的ImageWriter
的Iterator
。- 参数:
-
type
- 指示要写入的图像布局的ImageTypeSpecifier
。 -
formatName
-format
的非正式名称。 - 返回:
-
一个包含
ImageWriter
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果任何参数为null
。 - 参见:
-
getImageTranscoders
返回一个包含所有当前注册的声称能够在给定ImageReader
和ImageWriter
的元数据之间进行转码的ImageTranscoder
的Iterator
。- 参数:
-
reader
- 一个ImageReader
。 -
writer
- 一个ImageWriter
。 - 返回:
-
一个包含
ImageTranscoder
的Iterator
。 - 抛出:
-
IllegalArgumentException
- 如果reader
或writer
为null
。
-
read
使用从当前注册的ImageReader
中自动选择的ImageReader
解码提供的File
,返回一个BufferedImage
。将File
包装在ImageInputStream
中。如果没有注册的ImageReader
声称能够读取结果流,则返回null
。将使用
getUseCache
和getCacheDirectory
中的当前缓存设置来控制在创建的ImageInputStream
中的缓存。请注意,没有接受文件名作为
String
的read
方法;在从文件名创建File
后,请使用此方法。此方法不会尝试定位可以直接从
File
读取的ImageReader
;可以使用IIORegistry
和ImageReaderSpi
来实现。- 参数:
-
input
- 要读取的File
。 - 返回:
-
包含输入内容的
BufferedImage
,或者null
。 - 抛出:
-
IllegalArgumentException
- 如果input
为null
。 -
IOException
- 如果在读取期间发生错误或无法创建所需的ImageInputStream。
-
read
使用从当前注册的ImageReader
中自动选择的ImageReader
解码提供的InputStream
,返回一个BufferedImage
。将InputStream
包装在ImageInputStream
中。如果没有注册的ImageReader
声称能够读取结果流,则返回null
。将使用
getUseCache
和getCacheDirectory
中的当前缓存设置来控制在创建的ImageInputStream
中的缓存。此方法不会尝试定位可以直接从
InputStream
读取的ImageReader
;可以使用IIORegistry
和ImageReaderSpi
来实现。此方法在读取操作完成后不会关闭提供的
InputStream
;如果需要,调用方有责任关闭流。- 参数:
-
input
- 要读取的InputStream
。 - 返回:
-
包含输入内容的
BufferedImage
,或者null
。 - 抛出:
-
IllegalArgumentException
- 如果input
为null
。 -
IOException
- 如果在读取期间发生错误或无法创建所需的ImageInputStream。
-
read
使用从当前注册的ImageReader
中自动选择的ImageReader
解码提供的URL
,返回一个BufferedImage
。从URL
获取一个InputStream
,将其包装在ImageInputStream
中。如果没有注册的ImageReader
声称能够读取结果流,则返回null
。将使用
getUseCache
和getCacheDirectory
中的当前缓存设置来控制在创建的ImageInputStream
中的缓存。此方法不会尝试定位可以直接从
URL
读取的ImageReader
;可以使用IIORegistry
和ImageReaderSpi
来实现。- 参数:
-
input
- 要读取的URL
。 - 返回:
-
包含输入内容的
BufferedImage
,或者null
。 - 抛出:
-
IllegalArgumentException
- 如果input
为null
。 -
IOException
- 如果在读取期间发生错误或无法创建所需的ImageInputStream。
-
read
使用从当前注册的ImageReader
中自动选择的ImageReader
解码提供的ImageInputStream
,返回一个BufferedImage
。如果没有注册的ImageReader
声称能够读取流,则返回null
。与此类中的大多数其他方法不同,此方法在读取操作完成后会关闭提供的
ImageInputStream
,除非返回null
,在这种情况下,此方法不会关闭流。- 参数:
-
stream
- 要从中读取的ImageInputStream
。 - 返回:
-
包含输入内容的
BufferedImage
,或者null
。 - 抛出:
-
IllegalArgumentException
- 如果stream
为null
。 -
IOException
- 如果在读取期间发生错误。
-
write
public static boolean write(RenderedImage im, String formatName, ImageOutputStream output) throws IOException 使用支持给定格式的任意ImageWriter
将图像写入ImageOutputStream
。从当前流指针开始将图像写入ImageOutputStream
,如果存在,则覆盖该点之后的现有流数据。此方法在写入操作完成后不会关闭提供的
ImageOutputStream
;如果需要,调用方有责任关闭流。- 参数:
-
im
- 要写入的RenderedImage
。 -
formatName
- 包含格式的非正式名称的String
。 -
output
- 要写入的ImageOutputStream
。 - 返回:
-
如果找不到适当的写入器,则为
false
。 - 抛出:
-
IllegalArgumentException
- 如果任何参数为null
。 -
IOException
- 如果在写入期间发生错误。
-
write
使用支持给定格式的任意ImageWriter
将图像写入File
。如果已经存在File
,则其内容将被丢弃。- 参数:
-
im
- 要写入的RenderedImage
。 -
formatName
- 包含格式的非正式名称的String
。 -
output
- 要写入的File
。 - 返回:
-
如果找不到适当的写入器,则返回
false
。 - 抛出:
-
IllegalArgumentException
- 如果任何参数为null
。 -
IOException
- 如果在写入期间发生错误或无法创建所需的ImageOutputStream时。
-
write
public static boolean write(RenderedImage im, String formatName, OutputStream output) throws IOException 使用支持给定格式的任意ImageWriter
将图像写入OutputStream
。此方法在写入操作完成后不会关闭提供的
OutputStream
;如果需要,调用者有责任关闭流。将使用
getUseCache
和getCacheDirectory
中的当前缓存设置来控制缓存。- 参数:
-
im
- 要写入的RenderedImage
。 -
formatName
- 包含格式的非正式名称的String
。 -
output
- 要写入的OutputStream
。 - 返回:
-
如果找不到适当的写入器,则返回
false
。 - 抛出:
-
IllegalArgumentException
- 如果任何参数为null
。 -
IOException
- 如果在写入期间发生错误或无法创建所需的ImageOutputStream时。
-