模块  java.desktop
软件包  javax.imageio

Class ImageIO


  • public final class ImageIO
    extends Object
    包含静态便捷方法的类,用于定位 ImageReaderImageWriter ,并执行简单的编码和解码。
    • 方法详细信息

      • scanForPlugins

        public static void scanForPlugins()
        扫描应用程序类路径上的插件,加载其服务提供程序类,并为使用IIORegistry找到的每个插件注册服务提供程序实例。

        需要此方法,因为理论上应用程序类路径可以更改,或者可以使用其他插件。 不是在每次调用API时重新扫描类路径,而是仅在第一次调用时自动扫描类路径。 客户端可以调用此方法来提示重新扫描。 因此,此方法只需要由运行时动态生成新插件的复杂应用程序调用。

        所述getResources上下文的方法ClassLoader被用于定位包含文件的JAR文件命名为META-INF/services/javax.imageio.spi. 的类名类名 ,其中是一个ImageReaderSpiImageWriterSpiImageTranscoderSpiImageInputStreamSpi ,或ImageOutputStreamSpi ,沿着应用程序类路径。

        所定位文件的内容表示实现上述服务提供者接口的实际实现类的名称; 然后使用默认的类加载器加载这些类中的每一个并实例化每个类的实例,然后将其放入注册表中以供以后检索。

        搜索的确切位置集取决于Java运行时环境的实现。

        另请参见:
        ClassLoader.getResources(java.lang.String)
      • setUseCache

        public static void setUseCache​(boolean useCache)
        设置一个标志,指示在创建ImageInputStreamImageOutputStream时是否应使用基于磁盘的缓存文件。

        当从标准InputStream读取时,可能需要将先前读取的信息保存在高速缓存中,因为基础流不允许重新读取数据。 类似地,当写入标准OutputStream ,可以使用高速缓存来允许在将其刷新到最终目的地之前改变先前写入的值。

        缓存可以驻留在主存储器中或磁盘上。 将此标志设置为false不允许将磁盘用于将来的流,这在处理小图像时可能是有利的,因为删除了创建和销毁文件的开销。

        启动时,该值设置为true

        参数
        useCache - boolean指示在可选的情况下是否应使用缓存文件。
        另请参见:
        getUseCache()
      • getUseCache

        public static boolean getUseCache()
        如果未进行显式设置,则返回由 setUseCachetrue设置的当前值。
        结果
        如果基于磁盘的缓存可用于 ImageInputStreamImageOutputStreamImageOutputStream
        另请参见:
        setUseCache(boolean)
      • getCacheDirectory

        public static File getCacheDirectory()
        如果未进行显式设置,则返回由 setCacheDirectorynull设置的当前值。
        结果
        a File指示将创建缓存文件的目录;或 null ,指示系统相关的默认临时文件目录。
        另请参见:
        setCacheDirectory(java.io.File)
      • createImageInputStream

        public static ImageInputStream createImageInputStream​(Object input)
                                                       throws IOException
        返回ImageInputStream ,将从给定的Object获取其输入。 该组ImageInputStreamSpi与注册的小号IIORegistry类查询和第一个即能取从所提供的对象的输入被用来创建返回ImageInputStream 如果不存在合适的ImageInputStreamSpi ,则返回null

        来自getUseCachegetCacheDirectory的当前缓存设置将用于控制缓存。

        参数
        input -一个 Object被用作输入源,例如 File ,可读 RandomAccessFile ,或 InputStream
        结果
        ImageInputStreamnull
        异常
        IllegalArgumentException - 如果 inputnull
        IOException - 如果需要缓存文件但无法创建。
        另请参见:
        ImageInputStreamSpi
      • createImageOutputStream

        public static ImageOutputStream createImageOutputStream​(Object output)
                                                         throws IOException
        返回ImageOutputStream ,将其输出发送到给定的Object 该组ImageOutputStreamSpi与注册的小号IIORegistry类查询和对应的第一个是能够从所提供的对象发送输出被用来创建返回ImageOutputStream 如果不存在合适的ImageOutputStreamSpi ,则返回null

        getUseCachegetCacheDirectory的当前缓存设置将用于控制缓存。

        参数
        output -一个 Object被用作输出目的地,例如 File ,可写 RandomAccessFile ,或 OutputStream
        结果
        ImageOutputStream ,或 null
        异常
        IllegalArgumentException - 如果 outputnull
        IOException - 如果需要缓存文件但无法创建。
        另请参见:
        ImageOutputStreamSpi
      • getReaderFormatNames

        public static String[] getReaderFormatNames()
        返回 String的数组, String列出了当前注册读者所理解的所有非正式格式名称。
        结果
        数组 String s。
      • getReaderMIMETypes

        public static String[] getReaderMIMETypes()
        返回 String的数组, String列出了当前注册读者集所理解的所有MIME类型。
        结果
        数组 String s。
      • getReaderFileSuffixes

        public static String[] getReaderFileSuffixes()
        返回一个 String的数组, String列出了与当前注册读者集所理解的格式相关的所有文件后缀。
        结果
        String的数组。
        从以下版本开始:
        1.6
      • getImageReaders

        public static Iterator<ImageReader> getImageReaders​(Object input)
        返回Iterator其中包含所有当前已注册的ImageReader s声称能够解码所提供的Object ,通常为ImageInputStream

        在退出该方法时,流位置保持在其先前位置。

        参数
        input - 包含编码图像数据的 ImageInputStream或其他 Object
        结果
        一个 Iterator含有 ImageReader秒。
        异常
        IllegalArgumentException - 如果 inputnull
        另请参见:
        ImageReaderSpi.canDecodeInput(java.lang.Object)
      • getImageReadersByFormatName

        public static Iterator<ImageReader> getImageReadersByFormatName​(String formatName)
        返回 Iterator其中包含声称能够解码指定格式的所有当前已注册的 ImageReader
        参数
        formatName - 包含格式的非正式名称的 String例如 ,“jpeg”或“tiff”。
        结果
        IteratorImageReader s。
        异常
        IllegalArgumentException - 如果 formatNamenull
        另请参见:
        ImageReaderWriterSpi.getFormatNames()
      • getImageReadersBySuffix

        public static Iterator<ImageReader> getImageReadersBySuffix​(String fileSuffix)
        返回 Iterator其中包含所有当前已注册的 ImageReader ,声称能够解码具有给定后缀的文件。
        参数
        fileSuffix - 包含文件后缀的 String例如 ,“jpg”或“tiff”)。
        结果
        IteratorImageReader s。
        异常
        IllegalArgumentException - 如果 fileSuffixnull
        另请参见:
        ImageReaderWriterSpi.getFileSuffixes()
      • getImageReadersByMIMEType

        public static Iterator<ImageReader> getImageReadersByMIMEType​(String MIMEType)
        返回 Iterator其中包含所有当前已注册的 ImageReader ,声称能够解码具有给定MIME类型的文件。
        参数
        MIMEType - 包含文件后缀的 String例如 ,“image / jpeg”或“image / x-bmp”)。
        结果
        IteratorImageReader s。
        异常
        IllegalArgumentException - 如果 MIMETypenull
        另请参见:
        ImageReaderWriterSpi.getMIMETypes()
      • getWriterFormatNames

        public static String[] getWriterFormatNames()
        返回一个 String的数组, String列出了当前注册编写者所理解的所有非正式格式名称。
        结果
        数组 String s。
      • 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”。
        结果
        IteratorImageWriter s。
        异常
        IllegalArgumentException - 如果 formatNamenull
        另请参见:
        ImageReaderWriterSpi.getFormatNames()
      • getImageWritersBySuffix

        public static Iterator<ImageWriter> getImageWritersBySuffix​(String fileSuffix)
        返回 Iterator其中包含声称能够使用给定后缀对文件进行编码的所有当前已注册的 ImageWriter
        参数
        fileSuffix - 包含文件后缀的 String例如 ,“jpg”或“tiff”)。
        结果
        IteratorImageWriter s。
        异常
        IllegalArgumentException - 如果 fileSuffixnull
        另请参见:
        ImageReaderWriterSpi.getFileSuffixes()
      • getImageWritersByMIMEType

        public static Iterator<ImageWriter> getImageWritersByMIMEType​(String MIMEType)
        返回 Iterator其中包含所有当前已注册的 ImageWriter ,声称能够使用给定的MIME类型对文件进行编码。
        参数
        MIMEType - 包含文件后缀的 String例如 ,“image / jpeg”或“image / x-bmp”)。
        结果
        IteratorImageWriter s。
        异常
        IllegalArgumentException - 如果 MIMETypenull
        另请参见:
        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 - 如果 readernull
        另请参见:
        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 - 如果 writernull
        另请参见:
        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 ,声称能够在给定的 ImageReaderImageWriter的元数据之间进行转码。
        参数
        reader - ImageReader
        writer - ImageWriter
        结果
        IteratorImageTranscoder s。
        异常
        IllegalArgumentException - 如果 readerwriternull
      • read

        public static BufferedImage read​(File input)
                                  throws IOException
        返回BufferedImage作为解码所提供的File的结果,其中ImageReader自动从当前注册的那些中选择。 File被包裹在ImageInputStream 如果没有注册ImageReader声称能够读取结果流,则返回null

        getUseCachegetCacheDirectory的当前缓存设置将用于控制创建的ImageInputStream中的缓存。

        请注意,没有read方法将文件名作为String ; 在从文件名创建File之后使用此方法。

        此方法不试图定位ImageReader s表示可直接从读File ; 可以使用IIORegistryImageReaderSpi完成。

        参数
        input - 从 File中读取。
        结果
        BufferedImage包含输入的已解码内容,或 null
        异常
        IllegalArgumentException - 如果 inputnull
        IOException - 如果在读取期间发生错误或无法创建所需的ImageInputStream时发生错误。
      • read

        public static BufferedImage read​(InputStream input)
                                  throws IOException
        返回BufferedImage作为解码所提供的InputStream的结果,其中ImageReader是从当前注册的那些中自动选择的。 InputStreamImageInputStream 如果没有注册ImageReader声称能够读取结果流,则返回null

        getUseCachegetCacheDirectory的当前缓存设置将用于控制创建的ImageInputStream中的缓存。

        此方法不试图定位ImageReader s表示可以直接从一个读InputStream ; 可以使用IIORegistryImageReaderSpi完成。

        读取操作完成后,此方法不会关闭提供的InputStream ; 如果需要,调用者有责任关闭流。

        参数
        input - 来自的 InputStream
        结果
        BufferedImage包含输入的解码内容,或 null
        异常
        IllegalArgumentException - 如果 inputnull
        IOException - 如果在读取期间发生错误或无法创建所需的ImageInputStream。
      • read

        public static BufferedImage read​(URL input)
                                  throws IOException
        返回BufferedImage作为解码所提供的URL的结果,其中ImageReader是从当前注册的那些中自动选择的。 InputStream获自URL ,其包裹在ImageInputStream 如果没有注册ImageReader声称能够读取结果流,则返回null

        getUseCachegetCacheDirectory的当前缓存设置将用于控制创建的ImageInputStream中的缓存。

        此方法不试图定位ImageReader s表示可直接从读URL ; 可以使用IIORegistryImageReaderSpi完成。

        参数
        input - 来自的 URL
        结果
        BufferedImage包含输入的解码内容,或 null
        异常
        IllegalArgumentException - 如果 inputnull
        IOException - 如果在读取期间发生错误或无法创建所需的ImageInputStream时发生错误。
      • read

        public static BufferedImage read​(ImageInputStream stream)
                                  throws IOException
        返回BufferedImage作为解码所提供的ImageInputStream的结果,其中ImageReader自动从当前注册的那些中选择。 如果没有注册ImageReader声称能够读取流,则返回null

        与此类中的大多数其他的方法,这种方法关闭提供ImageInputStream读操作完成后,除非null返回,在这种情况下,该方法不会关闭该流。

        参数
        stream - 来自的 ImageInputStream
        结果
        BufferedImage包含输入的已解码内容,或 null
        异常
        IllegalArgumentException - 如果 streamnull
        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 ; 如果需要,调用者有责任关闭流。

        来自getUseCachegetCacheDirectory的当前缓存设置将用于控制缓存。

        参数
        im - 待写的 RenderedImage
        formatName - 包含格式的非正式名称的 String
        output - 写一个 OutputStream
        结果
        false如果找不到合适的作者。
        异常
        IllegalArgumentException - 如果任何参数是 null
        IOException - 如果在写入期间发生错误或无法创建所需的ImageOutputStream时发生错误。