- java.lang.Object
-
- javax.imageio.ImageIO
-
public final class ImageIO extends Object
一个包含静态方便的方法,用于定位ImageReader
和ImageWriter
s,并执行简单的编码和解码。
-
-
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 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
s,声称能够解码所提供的Object
,通常为ImageInputStream
。static Iterator<ImageReader>
getImageReadersByFormatName(String formatName)
返回一个Iterator
其中包含所有当前注册的ImageReader
s,声称能够解码命名格式。static Iterator<ImageReader>
getImageReadersByMIMEType(String MIMEType)
返回一个Iterator
其中包含所有当前注册的ImageReader
s,声称能够解码具有给定MIME类型的文件。static Iterator<ImageReader>
getImageReadersBySuffix(String fileSuffix)
返回一个Iterator
其中包含所有当前注册的ImageReader
s,声称能够使用给定的后缀解码文件。static Iterator<ImageTranscoder>
getImageTranscoders(ImageReader reader, ImageWriter writer)
返回一个Iterator
其中包含所有当前注册的ImageTranscoder
s,声称能够在给定的ImageReader
和ImageWriter
的元数据之间进行转码。static ImageWriter
getImageWriter(ImageReader reader)
返回一个ImageWriter
对应于给定的ImageReader
,如果有一个,或null
如果这个ImageReader
的插件没有指定相应的ImageWriter
,或者如果给定的ImageReader
没有注册。static Iterator<ImageWriter>
getImageWriters(ImageTypeSpecifier type, String formatName)
返回一个Iterator
其中包含所有当前注册的ImageWriter
s,声称能够以给定格式对给定布局(使用ImageTypeSpecifier
指定)的图像进行编码。static Iterator<ImageWriter>
getImageWritersByFormatName(String formatName)
返回一个Iterator
其中包含所有当前注册的ImageWriter
s,声称能够对命名格式进行编码。static Iterator<ImageWriter>
getImageWritersByMIMEType(String MIMEType)
返回一个Iterator
其中包含所有当前注册的ImageWriter
s,声称能够对具有给定MIME类型的文件进行编码。static Iterator<ImageWriter>
getImageWritersBySuffix(String fileSuffix)
返回一个Iterator
其中包含所有当前注册的ImageWriter
,声称能够使用给定的后缀对文件进行编码。static String[]
getReaderFileSuffixes()
返回一个String
的数组,列出与当前注册读者集合所理解的格式相关联的所有文件后缀。static String[]
getReaderFormatNames()
返回一个String
的数组,列出了当前注册读者集所理解的所有非正式格式名称。static String[]
getReaderMIMETypes()
返回一个String
的数组,列出了当前注册读者集所理解的所有MIME类型。static boolean
getUseCache()
如果没有进行显式设置,则返回当前设置的setUseCache
,或true
。static String[]
getWriterFileSuffixes()
返回一个String
的数组,String
列出了与当前注册作者集合所理解的格式相关联的所有文件后缀。static String[]
getWriterFormatNames()
返回一个String
的数组,String
列出了当前注册作者集所理解的所有非正式格式名称。static String[]
getWriterMIMETypes()
返回一个String
的数组,String
列出了当前注册作者集所理解的所有MIME类型。static BufferedImage
read(File input)
作为对所提供的File
进行解码的结果,返回BufferedImage
,其中自动从当前注册的那些中选择一个ImageReader
。static BufferedImage
read(InputStream input)
作为对所提供的InputStream
进行解码的结果,返回BufferedImage
,其中自动从当前注册的ImageReader
选择。static BufferedImage
read(URL input)
作为对所提供的URL
进行解码的结果,返回BufferedImage
,其中自动从当前注册的ImageReader
选择。static BufferedImage
read(ImageInputStream stream)
作为对所提供的ImageInputStream
进行解码的结果,返回BufferedImage
,其中自动从当前注册的ImageReader
选择。static void
scanForPlugins()
扫描应用程序类路径上的插件,加载其服务提供者类,并为每个发现的IIORegistry
注册一个服务提供者实例。static void
setCacheDirectory(File cacheDirectory)
设置要创建缓存文件的目录。static void
setUseCache(boolean useCache)
设置一个标志,指示在创建ImageInputStream
和ImageOutputStream
s时是否应使用基于磁盘的缓存文件。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
s和ImageOutputStream
s时是否应使用基于磁盘的缓存文件。当从标准
InputStream
读取时,可能需要将先前读取的信息保存在缓存中,因为底层流不允许重新读取数据。 类似地,当写入标准OutputStream
,可以使用高速缓存来允许改变先前写入的值,然后将其刷新到最终目的地。高速缓存可能驻留在主内存或磁盘上。 将此标志设置为
false
不允许将磁盘用于未来的流,这在使用小图像时可能是有利的,因为删除了创建和销毁文件的开销。启动时,该值设置为
true
。- 参数
-
useCache
- aboolean
指示是否应使用缓存文件,如果是可选的。 - 另请参见:
-
getUseCache()
-
getUseCache
public static boolean getUseCache()
如果没有进行显式设置,则返回setUseCache
设置的当前值,或true
。- 结果
-
如果基于磁盘的缓存可用于
ImageInputStream
s和ImageOutputStream
s,ImageOutputStream
。 - 另请参见:
-
setUseCache(boolean)
-
setCacheDirectory
public static void setCacheDirectory(File cacheDirectory)
设置要创建缓存文件的目录。 值null
表示要使用系统相关的默认临时文件目录。 如果getUseCache
返回false,则忽略此值。- 参数
-
cacheDirectory
- a指定目录的File
。 - 异常
-
SecurityException
- 如果安全管理器拒绝对目录的访问。 -
IllegalArgumentException
- 如果cacheDir
不是null
但不是目录。 - 另请参见:
-
File.createTempFile(String, String, File)
,getCacheDirectory()
-
getCacheDirectory
public static File getCacheDirectory()
返回当前值设置由setCacheDirectory
,或null
如果没有明确的设定已经取得进展。- 结果
-
一个
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
的阵列。
-
getReaderMIMETypes
public static String[] getReaderMIMETypes()
返回一个String
的数组,String
列出了当前注册读者集所理解的所有MIME类型。- 结果
-
一个
String
的数组。
-
getReaderFileSuffixes
public static String[] getReaderFileSuffixes()
返回一个String
的数组,列出与当前注册读者集合所理解的格式相关联的所有文件后缀。- 结果
-
一个
String
的数组。 - 从以下版本开始:
- 1.6
-
getImageReaders
public static Iterator<ImageReader> getImageReaders(Object input)
返回一个Iterator
其中包含所有当前注册的ImageReader
,声称能够解码所提供的Object
,通常为ImageInputStream
。在从该方法退出时,流位置保留在其先前位置。
- 参数
-
input
- 包含编码图像数据的ImageInputStream
或其他Object
。 - 结果
-
一个
Iterator
包含ImageReader
s。 - 异常
-
IllegalArgumentException
- 如果input
是null
。 - 另请参见:
-
ImageReaderSpi.canDecodeInput(java.lang.Object)
-
getImageReadersByFormatName
public static Iterator<ImageReader> getImageReadersByFormatName(String formatName)
返回一个Iterator
其中包含所有当前注册的ImageReader
,声称能够解码命名格式。- 参数
-
formatName
- 一个包含格式的非正式名称( 例如 “jpeg”或“tiff”)的String
。 - 结果
-
一个
Iterator
包含ImageReader
s。 - 异常
-
IllegalArgumentException
- 如果formatName
是null
。 - 另请参见:
-
ImageReaderWriterSpi.getFormatNames()
-
getImageReadersBySuffix
public static Iterator<ImageReader> getImageReadersBySuffix(String fileSuffix)
返回一个Iterator
其中包含所有当前注册的ImageReader
,声称能够解码具有给定后缀的文件。- 参数
-
fileSuffix
- 包含文件后缀( 例如 “jpg”或“tiff”)的String
。 - 结果
-
一个
Iterator
包含ImageReader
s。 - 异常
-
IllegalArgumentException
- 如果fileSuffix
是null
。 - 另请参见:
-
ImageReaderWriterSpi.getFileSuffixes()
-
getImageReadersByMIMEType
public static Iterator<ImageReader> getImageReadersByMIMEType(String MIMEType)
返回一个Iterator
其中包含所有当前注册的ImageReader
,声称能够解码具有给定MIME类型的文件。- 参数
-
MIMEType
- 包含文件后缀( 例如 ,“image / jpeg”或“image / x-bmp”)的String
。 - 结果
-
一个
Iterator
包含ImageReader
s。 - 异常
-
IllegalArgumentException
- 如果MIMEType
是null
。 - 另请参见:
-
ImageReaderWriterSpi.getMIMETypes()
-
getWriterFormatNames
public static String[] getWriterFormatNames()
返回一个String
的数组,String
列出了当前注册作者集所理解的所有非正式格式名称。- 结果
-
一个
String
的数组。
-
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
- 一个包含格式的非正式名称( 例如 “jpeg”或“tiff”)的String
。 - 结果
-
一个
Iterator
包含ImageWriter
的。 - 异常
-
IllegalArgumentException
- 如果formatName
是null
。 - 另请参见:
-
ImageReaderWriterSpi.getFormatNames()
-
getImageWritersBySuffix
public static Iterator<ImageWriter> getImageWritersBySuffix(String fileSuffix)
返回一个Iterator
其中包含所有当前注册的ImageWriter
s,声称能够使用给定的后缀对文件进行编码。- 参数
-
fileSuffix
- 包含文件后缀( 例如 “jpg”或“tiff”)的String
。 - 结果
-
一个
Iterator
包含ImageWriter
s。 - 异常
-
IllegalArgumentException
- 如果fileSuffix
是null
。 - 另请参见:
-
ImageReaderWriterSpi.getFileSuffixes()
-
getImageWritersByMIMEType
public static Iterator<ImageWriter> getImageWritersByMIMEType(String MIMEType)
返回一个Iterator
其中包含所有当前注册的ImageWriter
,声称能够对具有给定MIME类型的文件进行编码。- 参数
-
MIMEType
- 包含文件后缀( 例如 “image / jpeg”或“image / x-bmp”)的String
。 - 结果
-
一个
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()
返回的列表中的第一个。- 参数
-
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
s,声称能够以给定格式编码给定布局(使用ImageTypeSpecifier
指定)的图像。- 参数
-
type
- 表示要写入的图像的布局的ImageTypeSpecifier
。 -
formatName
-的非正式名称format
。 - 结果
-
一个
Iterator
包含ImageWriter
s。 - 异常
-
IllegalArgumentException
- 如果任何参数是null
。 - 另请参见:
-
ImageWriterSpi.canEncodeImage(ImageTypeSpecifier)
-
getImageTranscoders
public static Iterator<ImageTranscoder> getImageTranscoders(ImageReader reader, ImageWriter writer)
返回一个Iterator
其中包含所有当前注册的ImageTranscoder
s,声称能够在给定的ImageReader
和ImageWriter
的元数据之间进行转码。- 参数
-
reader
- aImageReader
。 -
writer
- aImageWriter
。 - 结果
-
一个
Iterator
包含ImageTranscoder
s。 - 异常
-
IllegalArgumentException
- 如果reader
或writer
是null
。
-
read
public static BufferedImage read(File input) throws IOException
作为对所提供的File
进行解码的结果,返回BufferedImage
,其中自动从当前注册的那些中选择一个ImageReader
。File
包裹在一个ImageInputStream
。 如果没有注册的ImageReader
声称能够读取结果流,则返回null
。getUseCache
和getCacheDirectory
的当前缓存设置将用于在创建的ImageInputStream
中控制缓存。请注意,没有
read
方法将文件名作为String
; 在从文件名创建File
之后,请使用此方法。此方法不试图定位
ImageReader
s表示可直接从读File
; 这可以使用IIORegistry
和ImageReaderSpi
完成。- 参数
-
input
- aFile
要阅读。 - 结果
-
一个
BufferedImage
包含输入,或经解码内容null
。 - 异常
-
IllegalArgumentException
- 如果input
是null
。 -
IOException
- 如果读取期间发生错误或无法创建所需的ImageInputStream时。
-
read
public static BufferedImage read(InputStream input) throws IOException
作为对所提供的InputStream
进行解码的结果,返回BufferedImage
,其中自动从当前注册的那些中选择一个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
作为对所提供的URL
进行解码的结果,返回BufferedImage
,其中自动从当前注册的那些中选择一个ImageReader
。 一个InputStream
从得到URL
,其被包裹在一个ImageInputStream
。 如果没有注册ImageReader
声称能够读取结果流,则返回null
。getUseCache
和getCacheDirectory
的当前缓存设置将用于在创建的ImageInputStream
中控制缓存。此方法不试图定位
ImageReader
s表示可直接从读URL
; 这可以使用IIORegistry
和ImageReaderSpi
完成。- 参数
-
input
- aURL
阅读。 - 结果
-
一个
BufferedImage
包含输入的解码内容,或null
。 - 异常
-
IllegalArgumentException
- 如果input
是null
。 -
IOException
- 如果读取期间出现错误或无法创建所需的ImageInputStream。
-
read
public static BufferedImage read(ImageInputStream stream) throws IOException
作为对所提供的ImageInputStream
进行解码的结果,返回BufferedImage
,其中自动从当前注册的ImageReader
选择一个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
- aRenderedImage
待写。 -
formatName
- aString
包含格式的非正式名称。 -
output
-ImageOutputStream
。 - 结果
-
false
如果没有找到合适的作者。 - 异常
-
IllegalArgumentException
- 如果任何参数是null
。 -
IOException
- 写入时是否发生错误。
-
write
public static boolean write(RenderedImage im, String formatName, File output) throws IOException
使用支持给定格式的任意ImageWriter
写入图像到File
。 如果已经存在File
,则其内容将被丢弃。- 参数
-
im
- aRenderedImage
待写。 -
formatName
- 一个包含格式的非正式名称的String
。 -
output
- aFile
要写入。 - 结果
-
false
如果没有找到合适的作者。 - 异常
-
IllegalArgumentException
- 如果任何参数是null
。 -
IOException
- 如果在写入过程中出现错误或无法创建所需的ImageOutputStream。
-
write
public static boolean write(RenderedImage im, String formatName, OutputStream output) throws IOException
使用支持给定格式的任意ImageWriter
写入图像到OutputStream
。写入操作完成后,此方法不关闭提供的
OutputStream
; 如果需要,呼叫者有责任关闭流。当前缓存设置从
getUseCache
和getCacheDirectory
将用于控制缓存。- 参数
-
im
- aRenderedImage
待写。 -
formatName
- aString
包含格式的非正式名称。 -
output
-OutputStream
。 - 结果
-
false
如果没有找到合适的作者。 - 异常
-
IllegalArgumentException
- 如果任何参数是null
。 -
IOException
- 如果写入期间发生错误或无法创建所需的ImageOutputStream。
-
-