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