- java.lang.Object
-
- javax.imageio.ImageIO
-
public final class ImageIO extends Object
包含静态便捷方法的类,用于定位ImageReader和ImageWriter,并执行简单的编码和解码。
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static ImageInputStreamcreateImageInputStream(Object input)返回ImageInputStream,它将从给定的Object获取其输入。static ImageOutputStreamcreateImageOutputStream(Object output)返回ImageOutputStream,将其输出发送到给定的Object。static FilegetCacheDirectory()如果未进行显式设置,则返回由setCacheDirectory或null设置的当前值。static ImageReadergetImageReader(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 ImageWritergetImageWriter(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 booleangetUseCache()如果未进行显式设置,则返回由setUseCache或true设置的当前值。static String[]getWriterFileSuffixes()返回一个String的数组,String列出了与当前注册编写器集所理解的格式相关的所有文件后缀。static String[]getWriterFormatNames()返回一个String的数组,列出当前注册编写者所理解的所有非正式格式名称。static String[]getWriterMIMETypes()返回一个String的数组,String列出了当前注册编写器集所理解的所有MIME类型。static BufferedImageread(File input)返回BufferedImage作为解码所提供的File的结果,其中ImageReader自动从当前注册的那些中选择。static BufferedImageread(InputStream input)返回BufferedImage作为解码所提供的InputStream的结果,其中ImageReader自动从当前注册的那些中选择。static BufferedImageread(URL input)返回BufferedImage作为解码所提供的URL的结果,其中ImageReader是从当前注册的那些中自动选择的。static BufferedImageread(ImageInputStream stream)返回BufferedImage作为解码所提供的ImageInputStream的结果,其中ImageReader是从当前注册的那些中自动选择的。static voidscanForPlugins()扫描应用程序类路径上的插件,加载其服务提供程序类,并为使用IIORegistry找到的每个插件注册服务提供程序实例。static voidsetCacheDirectory(File cacheDirectory)设置要创建缓存文件的目录。static voidsetUseCache(boolean useCache)设置一个标志,指示在创建ImageInputStream和ImageOutputStream时是否应使用基于磁盘的缓存文件。static booleanwrite(RenderedImage im, String formatName, File output)使用支持给定格式的任意ImageWriter将图像写入File。static booleanwrite(RenderedImage im, String formatName, OutputStream output)使用支持给定格式的任意ImageWriter将图像写入OutputStream。static booleanwrite(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列出了当前注册读者所理解的所有非正式格式名称。- 结果
-
数组
Strings。
-
getReaderMIMETypes
public static String[] getReaderMIMETypes()
返回String的数组,String列出了当前注册读者集所理解的所有MIME类型。- 结果
-
数组
Strings。
-
getReaderFileSuffixes
public static String[] getReaderFileSuffixes()
返回一个String的数组,String列出了与当前注册读者集所理解的格式相关的所有文件后缀。- 结果
-
String的数组。 - 从以下版本开始:
- 1.6
-
getImageReaders
public static Iterator<ImageReader> getImageReaders(Object input)
返回Iterator其中包含所有当前已注册的ImageReaders声称能够解码所提供的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含ImageReaders。 - 异常
-
IllegalArgumentException- 如果formatName是null。 - 另请参见:
-
ImageReaderWriterSpi.getFormatNames()
-
getImageReadersBySuffix
public static Iterator<ImageReader> getImageReadersBySuffix(String fileSuffix)
返回Iterator其中包含所有当前已注册的ImageReader,声称能够解码具有给定后缀的文件。- 参数
-
fileSuffix- 包含文件后缀的String( 例如 ,“jpg”或“tiff”)。 - 结果
-
Iterator含ImageReaders。 - 异常
-
IllegalArgumentException- 如果fileSuffix是null。 - 另请参见:
-
ImageReaderWriterSpi.getFileSuffixes()
-
getImageReadersByMIMEType
public static Iterator<ImageReader> getImageReadersByMIMEType(String MIMEType)
返回Iterator其中包含所有当前已注册的ImageReader,声称能够解码具有给定MIME类型的文件。- 参数
-
MIMEType- 包含文件后缀的String( 例如 ,“image / jpeg”或“image / x-bmp”)。 - 结果
-
Iterator含ImageReaders。 - 异常
-
IllegalArgumentException- 如果MIMEType是null。 - 另请参见:
-
ImageReaderWriterSpi.getMIMETypes()
-
getWriterFormatNames
public static String[] getWriterFormatNames()
返回一个String的数组,String列出了当前注册编写者所理解的所有非正式格式名称。- 结果
-
数组
Strings。
-
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含ImageWriters。 - 异常
-
IllegalArgumentException- 如果formatName是null。 - 另请参见:
-
ImageReaderWriterSpi.getFormatNames()
-
getImageWritersBySuffix
public static Iterator<ImageWriter> getImageWritersBySuffix(String fileSuffix)
返回Iterator其中包含声称能够使用给定后缀对文件进行编码的所有当前已注册的ImageWriter。- 参数
-
fileSuffix- 包含文件后缀的String( 例如 ,“jpg”或“tiff”)。 - 结果
-
Iterator含ImageWriters。 - 异常
-
IllegalArgumentException- 如果fileSuffix是null。 - 另请参见:
-
ImageReaderWriterSpi.getFileSuffixes()
-
getImageWritersByMIMEType
public static Iterator<ImageWriter> getImageWritersByMIMEType(String MIMEType)
返回Iterator其中包含所有当前已注册的ImageWriter,声称能够使用给定的MIME类型对文件进行编码。- 参数
-
MIMEType- 包含文件后缀的String( 例如 ,“image / jpeg”或“image / x-bmp”)。 - 结果
-
Iterator含ImageWriters。 - 异常
-
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含ImageTranscoders。 - 异常
-
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之后使用此方法。此方法不试图定位
ImageReaders表示可直接从读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中的缓存。此方法不试图定位
ImageReaders表示可以直接从一个读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中的缓存。此方法不试图定位
ImageReaders表示可直接从读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时发生错误。
-
-