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