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