模块  java.desktop
软件包  javax.imageio.spi

Class ImageWriterSpi

  • 实现的所有接口
    RegisterableService

    public abstract class ImageWriterSpi
    extends ImageReaderWriterSpi
    ImageWriter的服务提供者接口(SPI)。 有关服务提供程序类的详细信息,请参阅IIORegistry类的类注释。

    每个ImageWriterSpi提供了与其关联的ImageWriter类的几种类型的信息。

    谁定义的SPI类和类的简要描述的供应商的名称都可以通过现有getVendorNamegetDescriptiongetVersion方法。 这些方法可以国际化以提供特定于语言环境的输出。 这些方法主要用于提供可用于组织弹出菜单或其他列表的简短的人类可写信息。

    可以通过getFileSuffixesgetMIMEType方法获得与服务相关联的格式名称,文件后缀和MIME类型的getFormatNames 这些方法可用于识别候选ImageWriter用于基于手动格式选择,文件命名或MIME关联来编写特定文件或流。

    canEncodeImage方法提供了一种更可靠的方法来确定哪些ImageWriter可能能够解析特定数据流。 此方法允许服务提供商检查实际图像内容。

    最后,可以通过调用createWriterInstance方法获得与此服务提供者关联的ImageWriter类的实例。 任何重量级初始化(例如加载本机库或创建大型表)都应该至少延迟到第一次调用此方法为止。

    另请参见:
    IIORegistryImageTypeSpecifierImageWriter
    • 字段详细信息

      • STANDARD_OUTPUT_TYPE

        @Deprecated
        public static final <?>[] STANDARD_OUTPUT_TYPE
        Deprecated.
        Instead of using this field, directly create the equivalent array { ImageOutputStream.class }.
        最初包含 ImageOutputStream.class单元素数组,从 getOutputTypes返回。
      • outputTypes

        protected <?>[] outputTypes
        要从 getOutputTypes返回的 对象的数组,最初为 null
      • readerSpiNames

        protected String[] readerSpiNames
        getImageReaderSpiNames返回的字符串数组,最初为 null
    • 构造方法详细信息

      • ImageWriterSpi

        protected ImageWriterSpi()
        构造一个空白ImageWriterSpi 由子类来初始化实例变量和/或覆盖方法实现,以便提供所有方法的工作版本。
      • ImageWriterSpi

        public ImageWriterSpi​(String vendorName,
                              String version,
                              String[] names,
                              String[] suffixes,
                              String[] MIMETypes,
                              String writerClassName,
                              <?>[] outputTypes,
                              String[] readerSpiNames,
                              boolean supportsStandardStreamMetadataFormat,
                              String nativeStreamMetadataFormatName,
                              String nativeStreamMetadataFormatClassName,
                              String[] extraStreamMetadataFormatNames,
                              String[] extraStreamMetadataFormatClassNames,
                              boolean supportsStandardImageMetadataFormat,
                              String nativeImageMetadataFormatName,
                              String nativeImageMetadataFormatClassName,
                              String[] extraImageMetadataFormatNames,
                              String[] extraImageMetadataFormatClassNames)
        构造具有给定值集的 ImageWriterSpi
        参数
        vendorName - 供应商名称,作为非 null String
        version - 版本标识符,非 null String
        names - 非null数组, String指示格式名称的String 必须至少有一个条目。
        suffixes -的阵列String指示常用文件后缀。 如果未定义后缀,则应提供null 长度为0的数组将标准化为null
        MIMETypes - 指示格式的MIME类型的String数组。 如果未定义后缀,则应提供null 长度为0的数组将标准化为null
        writerClassName - 关联的 ImageWriterSpi类的完全限定名称,作为非 null String
        outputTypes - 长度至少为1的 对象的数组,指示合法的输出类型。
        readerSpiNames - 长度至少为1的数组String ,命名所有关联的类的ImageReadernull 长度为0的数组规范化为null
        supportsStandardStreamMetadataFormat - boolean ,指示流元数据对象是否可以使用标准元数据格式描述的树。
        nativeStreamMetadataFormatName - Stringnull ,将从 getNativeStreamMetadataFormatName返回。
        nativeStreamMetadataFormatClassName - Stringnull ,用于实例化要从 getNativeStreamMetadataFormat返回的元数据格式对象。
        extraStreamMetadataFormatNames -的阵列String S或null从返回, getExtraStreamMetadataFormatNames 长度为0的数组规范化为null
        extraStreamMetadataFormatClassNames - 一个String s或null的数组,用于实例化从getStreamMetadataFormat返回的元数据格式对象。 长度为0的数组标准化为null
        supportsStandardImageMetadataFormat - boolean ,指示图像元数据对象是否可以使用标准元数据格式描述的树。
        nativeImageMetadataFormatName -一个 String ,或 null ,从返回 getNativeImageMetadataFormatName
        nativeImageMetadataFormatClassName - Stringnull ,用于实例化要从 getNativeImageMetadataFormat返回的元数据格式对象。
        extraImageMetadataFormatNames -的阵列String从返回小号getExtraImageMetadataFormatNames 长度为0的数组规范化为null
        extraImageMetadataFormatClassNames - 一个String s或null的数组,用于实例化从getImageMetadataFormat返回的元数据格式对象。 长度为0的数组规范化为null
        异常
        IllegalArgumentException - 如果 vendorNamenull
        IllegalArgumentException - 如果 versionnull
        IllegalArgumentException - 如果 namesnull或者长度为0。
        IllegalArgumentException - 如果 writerClassNamenull
        IllegalArgumentException - 如果 outputTypesnull或者长度为0。
    • 方法详细信息

      • isFormatLossless

        public boolean isFormatLossless()
        如果此true器输出的格式精确地保留像素数据,则返回true 默认实现返回true
        结果
        true如果格式保留完整的像素精度。
      • getOutputTypes

        public <?>[] getOutputTypes()
        返回一个对象的数组,指示可以将哪些类型的对象用作writer setOutput方法的参数。

        对于大多数仅输出到ImageOutputStream ,应返回包含ImageOutputStream.class的单元素数组。

        结果
        非长度为 的非 null数组,长度至少为1。
      • canEncodeImage

        public abstract boolean canEncodeImage​(ImageTypeSpecifier type)
        如果与此服务提供者关联的ImageWriter实现能够使用给定布局对图像进行编码,则返回true 布局( 图像的SampleModelColorModel )由ImageTypeSpecifier对象描述。

        返回值true不是成功编码的绝对保证; 由于诸如I / O错误,数据结构不一致或格式错误等因素,编码过程仍可能产生错误。目的是对图像的基本结构进行合理检查,以确定它是否在编码格式的范围。 例如,对于格式的服务提供商,只能编码灰度将返回false如果交给一个RGB BufferedImage 类似地,可以编码8位RGB图像的格式的服务提供商可能拒绝使用关联的Alpha通道对图像进行编码。

        不同的ImageWriter ,以及服务提供商,可能会选择或多或少严格。 例如,他们可能会接受具有预乘alpha的图像,即使它必须从每个像素中分割出来,但是会有一些精度损失,以便进行存储。

        参数
        type - 一个 ImageTypeSpecifier指定要写入的图像的布局。
        结果
        true如果此编写者可能能够使用给定布局对图像进行编码。
        异常
        IllegalArgumentException - 如果 typenull
      • canEncodeImage

        public boolean canEncodeImage​(RenderedImage im)
        返回true如果ImageWriter与此服务提供者关联实现能够编码给定的RenderedImage实例。 请注意,这包括java.awt.image.BufferedImage实例。

        有关此方法语义的信息,请参阅canEncodeImage(ImageTypeSpecifier)的讨论。

        参数
        im - 要编码的 RenderedImage的实例。
        结果
        true如果此编写者可能能够对此图像进行编码。
        异常
        IllegalArgumentException - 如果 imnull
      • createWriterInstance

        public ImageWriter createWriterInstance()
                                         throws IOException
        返回与此服务提供者关联的ImageWriter实现的实例。 返回的对象最初将处于初始状态,就像调用了它的reset方法一样。

        默认实现只返回createWriterInstance(null)

        结果
        一个 ImageWriter实例。
        异常
        IOException - 如果在加载或初始化writer类期间或在 IOException器对象的实例化或初始化期间发生错误。
      • createWriterInstance

        public abstract ImageWriter createWriterInstance​(Object extension)
                                                  throws IOException
        返回与此服务提供者关联的ImageWriter实现的实例。 返回的对象最初将处于初始状态,就像调用了它的reset方法一样。

        可以在构建时向插件提供Object 对象的性质完全是插件特定的。

        通常,插件将使用诸如return new MyImageWriter(this)代码实现此方法。

        参数
        extension - 特定于插件的扩展对象,可能是 null
        结果
        一个 ImageWriter实例。
        异常
        IOException - 如果尝试实例化 IOException失败。
        IllegalArgumentException - 如果 ImageWriter的构造函数抛出 IllegalArgumentException以指示扩展对象不适合。
      • isOwnWriter

        public boolean isOwnWriter​(ImageWriter writer)
        如果传入的 ImageWriter对象是与此服务提供者关联的 ImageWriter的实例,则返回 true
        参数
        writer - ImageWriter实例。
        结果
        true如果识别出 writer
        异常
        IllegalArgumentException - 如果 writernull
      • getImageReaderSpiNames

        public String[] getImageReaderSpiNames()
        返回的数组String包含所有的所有的完全合格的名称小号ImageReaderSpi类,可以理解由所使用的内部元数据表示ImageWriter与此服务提供商相关联,或null如果没有这样ImageReaders指定。 如果返回非null值,则其长度必须为非零。

        数组中的第一项必须是“首选”阅读器的服务提供程序的名称,因为它将用于实例化ImageReader返回的ImageIO.getImageReader(ImageWriter)

        该机制可用于获得ImageReaders ,其将在由ImageWriter理解的结构中生成非像素元数据(参见IIOExtraDataInfo )。 通过读取图像并从使用此方法获得的ImageReaders之一获取此数据并将其传递给ImageWriter ,客户端程序可以读取图像,以某种方式对其进行修改,并将其写回保留所有元数据,无需了解元数据的内部结构,甚至图像格式。

        结果
        长度至少为1的 String数组,包含 ImageReaderSpi s或 null
        另请参见:
        ImageIO.getImageReader(ImageWriter)ImageReaderSpi.getImageWriterSpiNames()