Module  java.desktop
软件包  javax.imageio

Class ImageIO



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

      • 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)
        设置一个标志,指示在创建ImageInputStream s和ImageOutputStream s时是否应使用基于磁盘的缓存文件。

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

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

        启动时,该值设置为true

        参数
        useCache - a boolean指示是否应使用缓存文件,如果是可选的。
        另请参见:
        getUseCache()
      • getUseCache

        public static boolean getUseCache​()
        如果没有进行显式设置,则返回 setUseCache设置的当前值,或 true
        结果
        如果基于磁盘的缓存可用于 ImageInputStream s和 ImageOutputStream s, ImageOutputStream
        另请参见:
        setUseCache(boolean)
      • 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

        当前缓存设置从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的阵列。
      • 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包含 ImageReader s。
        异常
        IllegalArgumentException - 如果 inputnull
        另请参见:
        ImageReaderSpi.canDecodeInput(java.lang.Object)
      • getImageReadersByFormatName

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

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

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

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

        public static Iterator<ImageWriter> getImageWritersByMIMEType​(String MIMEType)
        返回一个 Iterator其中包含所有当前注册的 ImageWriter ,声称能够对具有给定MIME类型的文件进行编码。
        参数
        MIMEType - 包含文件后缀( 例如 “image / jpeg”或“image / x-bmp”)的 String
        结果
        一个 Iterator包含 ImageWriter 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()返回的列表中的第一个。
        参数
        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()
      • getImageTranscoders

        public static Iterator<ImageTranscoder> getImageTranscoders​(ImageReader reader,
                                                                    ImageWriter writer)
        返回一个 Iterator其中包含所有当前注册的 ImageTranscoder s,声称能够在给定的 ImageReaderImageWriter的元数据之间进行转码。
        参数
        reader - a ImageReader
        writer - a ImageWriter
        结果
        一个 Iterator包含 ImageTranscoder s。
        异常
        IllegalArgumentException - 如果 readerwriternull
      • read

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

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

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

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

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

        public static BufferedImage read​(InputStream input)
                                  throws IOException
        作为对所提供的InputStream进行解码的结果,返回BufferedImage ,其中自动从当前注册的那些中选择一个ImageReader InputStream包裹在一个ImageInputStream 如果没有注册的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
        作为对所提供的URL进行解码的结果,返回BufferedImage ,其中自动从当前注册的那些中选择一个ImageReader 一个InputStream从得到URL ,其被包裹在一个ImageInputStream 如果没有注册ImageReader声称能够读取结果流,则返回null

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

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

        参数
        input - a URL阅读。
        结果
        一个 BufferedImage包含输入的解码内容,或 null
        异常
        IllegalArgumentException - 如果 inputnull
        IOException - 如果读取期间出现错误或无法创建所需的ImageInputStream。
      • read

        public static BufferedImage read​(ImageInputStream stream)
                                  throws IOException
        作为对所提供的ImageInputStream进行解码的结果,返回BufferedImage ,其中自动从当前注册的ImageReader选择一个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 - a RenderedImage待写。
        formatName - a String包含格式的非正式名称。
        output - ImageOutputStream
        结果
        false如果没有找到合适的作者。
        异常
        IllegalArgumentException - 如果任何参数是 null
        IOException - 写入时是否发生错误。
      • write

        public static boolean write​(RenderedImage im,
                                    String formatName,
                                    File output)
                             throws IOException
        使用支持给定格式的任意ImageWriter写入图像到File 如果已经存在File ,则其内容将被丢弃。
        参数
        im - a RenderedImage待写。
        formatName - 一个包含格式的非正式名称的 String
        output - a File要写入。
        结果
        false如果没有找到合适的作者。
        异常
        IllegalArgumentException - 如果任何参数是 null
        IOException - 如果在写入过程中出现错误或无法创建所需的ImageOutputStream。
      • write

        public static boolean write​(RenderedImage im,
                                    String formatName,
                                    OutputStream output)
                             throws IOException
        使用支持给定格式的任意ImageWriter写入图像到OutputStream

        写入操作完成后,此方法关闭提供的OutputStream ; 如果需要,呼叫者有责任关闭流。

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

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