- java.lang.Object
-
- javax.imageio.ImageIO
-
public final class ImageIO extends Object
一个包含静态方便的方法,用于定位ImageReader和ImageWriters,并执行简单的编码和解码。
-
-
方法摘要
所有方法 静态方法 具体的方法 Modifier and Type 方法 描述 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其中包含所有当前注册的ImageReaders,声称能够解码所提供的Object,通常为ImageInputStream。static Iterator<ImageReader>getImageReadersByFormatName(String formatName)返回一个Iterator其中包含所有当前注册的ImageReaders,声称能够解码命名格式。static Iterator<ImageReader>getImageReadersByMIMEType(String MIMEType)返回一个Iterator其中包含所有当前注册的ImageReaders,声称能够解码具有给定MIME类型的文件。static Iterator<ImageReader>getImageReadersBySuffix(String fileSuffix)返回一个Iterator其中包含所有当前注册的ImageReaders,声称能够使用给定的后缀解码文件。static Iterator<ImageTranscoder>getImageTranscoders(ImageReader reader, ImageWriter writer)返回一个Iterator其中包含所有当前注册的ImageTranscoders,声称能够在给定的ImageReader和ImageWriter的元数据之间进行转码。static ImageWritergetImageWriter(ImageReader reader)返回一个ImageWriter对应于给定的ImageReader,如果有一个,或null如果这个ImageReader的插件没有指定相应的ImageWriter,或者如果给定的ImageReader没有注册。static Iterator<ImageWriter>getImageWriters(ImageTypeSpecifier type, String formatName)返回一个Iterator其中包含所有当前注册的ImageWriters,声称能够以给定格式对给定布局(使用ImageTypeSpecifier指定)的图像进行编码。static Iterator<ImageWriter>getImageWritersByFormatName(String formatName)返回一个Iterator其中包含所有当前注册的ImageWriters,声称能够对命名格式进行编码。static Iterator<ImageWriter>getImageWritersByMIMEType(String MIMEType)返回一个Iterator其中包含所有当前注册的ImageWriters,声称能够对具有给定MIME类型的文件进行编码。static Iterator<ImageWriter>getImageWritersBySuffix(String fileSuffix)返回一个Iterator其中包含所有当前注册的ImageWriter,声称能够使用给定的后缀对文件进行编码。static String[]getReaderFileSuffixes()返回一个String的数组,列出与当前注册读者集合所理解的格式相关联的所有文件后缀。static String[]getReaderFormatNames()返回一个String的数组,列出了当前注册读者集所理解的所有非正式格式名称。static String[]getReaderMIMETypes()返回一个String的数组,列出了当前注册读者集所理解的所有MIME类型。static booleangetUseCache()如果没有进行显式设置,则返回当前设置的setUseCache,或true。static String[]getWriterFileSuffixes()返回一个String的数组,String列出了与当前注册作者集合所理解的格式相关联的所有文件后缀。static String[]getWriterFormatNames()返回一个String的数组,String列出了当前注册作者集所理解的所有非正式格式名称。static String[]getWriterMIMETypes()返回一个String的数组,String列出了当前注册作者集所理解的所有MIME类型。static BufferedImageread(File input)作为对所提供的File进行解码的结果,返回BufferedImage,其中自动从当前注册的那些中选择一个ImageReader。static BufferedImageread(InputStream input)作为对所提供的InputStream进行解码的结果,返回BufferedImage,其中自动从当前注册的ImageReader选择。static BufferedImageread(URL input)作为对所提供的URL进行解码的结果,返回BufferedImage,其中自动从当前注册的ImageReader选择。static BufferedImageread(ImageInputStream stream)作为对所提供的ImageInputStream进行解码的结果,返回BufferedImage,其中自动从当前注册的ImageReader选择。static voidscanForPlugins()扫描应用程序类路径上的插件,加载其服务提供者类,并为每个发现的IIORegistry注册一个服务提供者实例。static voidsetCacheDirectory(File cacheDirectory)设置要创建缓存文件的目录。static voidsetUseCache(boolean useCache)设置一个标志,指示在创建ImageInputStream和ImageOutputStreams时是否应使用基于磁盘的缓存文件。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)
设置一个标志,指示在创建ImageInputStreams和ImageOutputStreams时是否应使用基于磁盘的缓存文件。当从标准
InputStream读取时,可能需要将先前读取的信息保存在缓存中,因为底层流不允许重新读取数据。 类似地,当写入标准OutputStream,可以使用高速缓存来允许改变先前写入的值,然后将其刷新到最终目的地。高速缓存可能驻留在主内存或磁盘上。 将此标志设置为
false不允许将磁盘用于未来的流,这在使用小图像时可能是有利的,因为删除了创建和销毁文件的开销。启动时,该值设置为
true。- 参数
-
useCache- aboolean指示是否应使用缓存文件,如果是可选的。 - 另请参见:
-
getUseCache()
-
getUseCache
public static boolean getUseCache()
如果没有进行显式设置,则返回setUseCache设置的当前值,或true。- 结果
-
如果基于磁盘的缓存可用于
ImageInputStreams和ImageOutputStreams,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包含ImageReaders。 - 异常
-
IllegalArgumentException- 如果input是null。 - 另请参见:
-
ImageReaderSpi.canDecodeInput(java.lang.Object)
-
getImageReadersByFormatName
public static Iterator<ImageReader> getImageReadersByFormatName(String formatName)
返回一个Iterator其中包含所有当前注册的ImageReader,声称能够解码命名格式。- 参数
-
formatName- 一个包含格式的非正式名称( 例如 “jpeg”或“tiff”)的String。 - 结果
-
一个
Iterator包含ImageReaders。 - 异常
-
IllegalArgumentException- 如果formatName是null。 - 另请参见:
-
ImageReaderWriterSpi.getFormatNames()
-
getImageReadersBySuffix
public static Iterator<ImageReader> getImageReadersBySuffix(String fileSuffix)
返回一个Iterator其中包含所有当前注册的ImageReader,声称能够解码具有给定后缀的文件。- 参数
-
fileSuffix- 包含文件后缀( 例如 “jpg”或“tiff”)的String。 - 结果
-
一个
Iterator包含ImageReaders。 - 异常
-
IllegalArgumentException- 如果fileSuffix是null。 - 另请参见:
-
ImageReaderWriterSpi.getFileSuffixes()
-
getImageReadersByMIMEType
public static Iterator<ImageReader> getImageReadersByMIMEType(String MIMEType)
返回一个Iterator其中包含所有当前注册的ImageReader,声称能够解码具有给定MIME类型的文件。- 参数
-
MIMEType- 包含文件后缀( 例如 ,“image / jpeg”或“image / x-bmp”)的String。 - 结果
-
一个
Iterator包含ImageReaders。 - 异常
-
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其中包含所有当前注册的ImageWriters,声称能够使用给定的后缀对文件进行编码。- 参数
-
fileSuffix- 包含文件后缀( 例如 “jpg”或“tiff”)的String。 - 结果
-
一个
Iterator包含ImageWriters。 - 异常
-
IllegalArgumentException- 如果fileSuffix是null。 - 另请参见:
-
ImageReaderWriterSpi.getFileSuffixes()
-
getImageWritersByMIMEType
public static Iterator<ImageWriter> getImageWritersByMIMEType(String MIMEType)
返回一个Iterator其中包含所有当前注册的ImageWriter,声称能够对具有给定MIME类型的文件进行编码。- 参数
-
MIMEType- 包含文件后缀( 例如 “image / jpeg”或“image / x-bmp”)的String。 - 结果
-
一个
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()返回的列表中的第一个。- 参数
-
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其中包含所有当前注册的ImageWriters,声称能够以给定格式编码给定布局(使用ImageTypeSpecifier指定)的图像。- 参数
-
type- 表示要写入的图像的布局的ImageTypeSpecifier。 -
formatName-的非正式名称format。 - 结果
-
一个
Iterator包含ImageWriters。 - 异常
-
IllegalArgumentException- 如果任何参数是null。 - 另请参见:
-
ImageWriterSpi.canEncodeImage(ImageTypeSpecifier)
-
getImageTranscoders
public static Iterator<ImageTranscoder> getImageTranscoders(ImageReader reader, ImageWriter writer)
返回一个Iterator其中包含所有当前注册的ImageTranscoders,声称能够在给定的ImageReader和ImageWriter的元数据之间进行转码。- 参数
-
reader- aImageReader。 -
writer- aImageWriter。 - 结果
-
一个
Iterator包含ImageTranscoders。 - 异常
-
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之后,请使用此方法。此方法不试图定位
ImageReaders表示可直接从读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中控制缓存。此方法不试图定位
ImageReaders表示可以直接从读取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中控制缓存。此方法不试图定位
ImageReaders表示可直接从读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。
-
-