Module  java.desktop
软件包  javax.imageio

Class ImageWriter

  • All Implemented Interfaces:
    ImageTranscoder


    public abstract class ImageWriter
    extends Object
    implements ImageTranscoder
    用于编码和写入图像的抽象超类。 该类必须由在Java Image I / O框架的上下文中写出图像的类子类化。

    ImageWriter对象通常由服务提供商类针对特定格式实例化。 服务提供商类已注册到IIORegistry ,它们用于格式识别和呈现可用格式的读者和作者。

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

      • originatingProvider

        protected ImageWriterSpi originatingProvider
        ImageWriterSpi认为这个实例化对象,或者null如果其身份未知或不存在。 默认情况下,它被初始化为null
      • output

        protected Object output
        所述ImageOutputStream或其它Object通过设置setOutput ,并通过检索getOutput 默认情况下,它被初始化为null
      • availableLocales

        protected Locale[] availableLocales
        的阵列Locale可用于本地化警告消息和压缩设置值,或S null如果不支持定位。 默认情况下,它被初始化为null
      • locale

        protected Locale locale
        目前Locale用于定位,或null ;如果没有设置。 默认情况下,它被初始化为null
      • warningListeners

        protected List<IIOWriteWarningListener> warningListeners
        A List当前注册的 IIOWriteWarningListener s,默认初始化为 null ,这是一个空的 List同义词。
      • warningLocales

        protected List<Locale> warningLocales
        ListLocale S,一个用于的每个元素 warningListeners ,默认情况下初始化 null ,它与空同义 List
      • progressListeners

        protected List<IIOWriteProgressListener> progressListeners
        A List当前注册的 IIOWriteProgressListener s,默认初始化为 null ,这是空的 List代名词。
    • 构造方法详细信息

      • ImageWriter

        protected ImageWriter​(ImageWriterSpi originatingProvider)
        构造一个ImageWriter并将其originatingProvider实例变量设置为提供的值。

        使用扩展的子类应提供带有签名(ImageWriterSpi, Object)的构造函数,以检索扩展对象。 如果扩展对象不合适,则应抛出一个IllegalArgumentException

        参数
        originatingProvider -所述 ImageWriterSpi被构造该对象,或 null
    • 方法详细信息

      • getOriginatingProvider

        public ImageWriterSpi getOriginatingProvider​()
        返回ImageWriterSpi创建此对象ImageWriter ,或者null如果这个对象不是通过创建IIORegistry

        默认实现返回值为originatingProvider实例变量。

        结果
        一个 ImageWriterSpinull
        另请参见:
        ImageWriterSpi
      • setOutput

        public void setOutput​(Object output)
        将目的地设置为给定的ImageOutputStream或其他Object 假设目的地准备好接受数据,并且不会在每次写入结束时关闭。 这允许分布式成像应用程序通过单个网络连接传输一系列图像。 如果outputnull ,则任何当前设置的输出将被删除。

        如果outputImageOutputStream ,调用到writewriteToSequence ,和prepareWriteEmpty / endWriteEmpty方法将保留流的现有内容。 其它的写入方法,例如writeInsertreplaceStreamMetadatareplaceImageMetadatareplacePixelsprepareInsertEmpty / endInsertEmpty ,和endWriteSequence ,所需要的流的全部内容是可读的和可写的,并且可以改变流的任何部分。

        的一般使用Object比其他ImageOutputStream旨在用于直接与输出装置或图像协议交互的作家。 这套法律课由作者的服务提供者的getOutputTypes方法发布; 大多数作家将返回一个仅包含ImageOutputStream.class的单元素数组,表示它们只接受一个ImageOutputStream

        检查output之后,默认实现将output的值设置为output ,与发起提供者发布的一组类别output (如果有)。

        参数
        output - ImageOutputStream或其他 Object用于将来的写作。
        异常
        IllegalArgumentException - 如果 output不是由始发服务提供商的 getOutputTypes方法返回的类之一的实例。
        另请参见:
        getOutput()
      • getOutput

        public Object getOutput​()
        返回ImageOutputStream或其他Object设置的最新调用setOutput方法。 如果没有设置目的地,则返回null

        默认实现返回值为output实例变量。

        结果
        所述 Object最近使用指定 setOutput ,或 null
        另请参见:
        setOutput(java.lang.Object)
      • getAvailableLocales

        public Locale[] getAvailableLocales​()
        返回可用于本地化警告侦听器和压缩设置的Locale s的数组。 返回值为null表示不支持本地化。

        如果它是非null ,则默认实现将返回availableLocales实例变量的克隆,否则返回null

        结果
        可以用作 Locale的参数的 setLocale ,或 null
      • setLocale

        public void setLocale​(Locale locale)
        将此ImageWriter的当前Locale设置为给定值。 null删除任何以前的设置,并指示作者应将其视为合适的本地化。

        默认实现检查localegetAvailableLocales返回的值,并设置locale实例变量(如果找到)。 如果localenull ,则实例变量设置为null而不进行任何检查。

        参数
        locale - 期望的 Localenull
        异常
        IllegalArgumentException - 如果 locale不是 null但不是由 getAvailableLocales返回的值 getAvailableLocales
        另请参见:
        getLocale()
      • getLocale

        public Locale getLocale​()
        如果没有设置,返回当前设置的Localenull

        默认实现返回值为locale实例变量。

        结果
        目前为 Locale ,或 null
        另请参见:
        setLocale(java.util.Locale)
      • getDefaultWriteParam

        public ImageWriteParam getDefaultWriteParam​()
        返回一个包含默认值的文件格式的适当类型的新的ImageWriteParam对象,即,如果未指定ImageWriteParam对象将使用的那些值。 这是一个起点,用于调整一些参数,否则只能保留默认设置。

        默认实现构造并返回不允许平铺,逐行编码或压缩的新的ImageWriteParam对象,并且将对当前的Locale进行本地化( 通过调用new ImageWriteParam(getLocale())获得的new ImageWriteParam(getLocale())

        个别插件可能会返回一个ImageWriteParam的实例,并启用其他可选功能,否则可能会返回一个插件特定子类的ImageWriteParam

        结果
        一个新的 ImageWriteParam对象包含默认值。
      • getDefaultStreamMetadata

        public abstract IIOMetadata getDefaultStreamMetadata​(ImageWriteParam param)
        返回包含用于编码图像流的默认值的IIOMetadata对象。 可以使用由IIOMetadata.getAsTree方法返回的XML树结构, IIOMetadataController对象或通过插件特定接口来操纵对象的内容,并将得到的数据提供给采用流元数据参数的write方法之一。

        可能会为可能影响流元数据结构的情况提供可选的ImageWriteParam

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        不使用流元数据的作者( 例如 ,单图像格式的作者)应返回null

        参数
        param -一个 ImageWriteParam将被用于对图像,或编码 null
        结果
        一个 IIOMetadata对象。
      • getDefaultImageMetadata

        public abstract IIOMetadata getDefaultImageMetadata​(ImageTypeSpecifier imageType,
                                                            ImageWriteParam param)
        返回一个包含用于对给定类型的图像进行编码的默认值的IIOMetadata对象。 可以使用由IIOMetadata.getAsTree方法返回的XML树结构, IIOMetadataController对象或通过插件特定接口来操纵对象的内容,并将得到的数据提供给采用流元数据参数的write方法之一。

        可能会为可能影响图像元数据结构的情况提供ImageWriteParam

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        参数
        imageType - 表示要稍后写入的图像格式的 ImageTypeSpecifier
        param -一个 ImageWriteParam将被用于对图像,或编码 null
        结果
        一个 IIOMetadata对象。
      • convertStreamMetadata

        public abstract IIOMetadata convertStreamMetadata​(IIOMetadata inData,
                                                          ImageWriteParam param)
        描述从接口ImageTranscoder复制
        返回可用于编码的IIOMetadata对象,并可使用其文档接口或特定于将用于编码的写入程序插件的其他接口进行可选修改。

        可能会为可能影响流元数据结构的情况提供可选的ImageWriteParam

        如果提供的ImageWriteParam包含此作者或代码转换器ImageWriteParam可选设置值,它们将被忽略。

        Specified by:
        convertStreamMetadata在接口 ImageTranscoder
        参数
        inData - 表示流元数据的 IIOMetadata对象,用于初始化返回对象的状态。
        param -一个 ImageWriteParam将被用于对图像,或编码 null
        结果
        一个 IIOMetadata对象,或 null如果插件不提供元数据编码功能。
      • convertImageMetadata

        public abstract IIOMetadata convertImageMetadata​(IIOMetadata inData,
                                                         ImageTypeSpecifier imageType,
                                                         ImageWriteParam param)
        描述从接口ImageTranscoder复制
        返回可用于编码的IIOMetadata对象,并可以使用其文档接口或特定于将用于编码的writer插件的其他接口进行可选修改。

        可能会为可能影响图像元数据结构的情况提供可选的ImageWriteParam

        如果提供的ImageWriteParam包含此写入器或代码转换器ImageWriteParam可选设置值,它们将被忽略。

        Specified by:
        convertImageMetadata在接口 ImageTranscoder
        参数
        inData - 表示图像元数据的 IIOMetadata对象,用于初始化返回对象的状态。
        imageType - 表示元数据将与之相关联的图像的布局和颜色信息的 ImageTypeSpecifier
        param -一个 ImageWriteParam将被用于对图像,或编码 null
        结果
        一个 IIOMetadata对象,或 null如果插件不提供元数据编码功能。
      • getNumThumbnailsSupported

        public int getNumThumbnailsSupported​(ImageTypeSpecifier imageType,
                                             ImageWriteParam param,
                                             IIOMetadata streamMetadata,
                                             IIOMetadata imageMetadata)
        给定图像类型以及编码期间将要使用的任何其他写入参数和元数据对象,返回由正在写入的格式支持的缩略图数。 返回值为-1表示信息不足。

        可以可选地为可能影响缩略图处理的情况提供一个ImageWriteParam

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        默认实现返回0。

        参数
        imageType -一个 ImageTypeSpecifier指示图像的类型将被写入,或 null
        param -在 ImageWriteParam将被用于书写,或 null
        streamMetadata - 将用于写入的 IIOMetadata对象,或 null
        imageMetadata - 将用于写入的 IIOMetadata对象,或 null
        结果
        提供的参数可能写入的缩略图数量,如果信息不足, -1
      • getPreferredThumbnailSizes

        public Dimension[] getPreferredThumbnailSizes​(ImageTypeSpecifier imageType,
                                                      ImageWriteParam param,
                                                      IIOMetadata streamMetadata,
                                                      IIOMetadata imageMetadata)
        返回Dimension s的数组,表示缩略图的合法大小范围,因为它们将被编码在输出文件或流中。 这些信息只是咨询; 作者将根据需要调整所提供的缩略图大小。

        信息作为一组对返回; 一对的第一个元素包含(包括)最小宽度和高度,第二个元素包含(包含)最大宽度和高度。 在一起,每对都定义了一个有效的大小范围。 要指定固定的大小,这两个元素将显示相同的宽度和高度。 返回值为null表示大小是任意的或未知的。

        可以可选地为可能影响缩略图处理的情况提供ImageWriteParam

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        默认实现返回null

        参数
        imageType -一个 ImageTypeSpecifier指示图像的类型将被写入,或 null
        param -在 ImageWriteParam将被用于书写,或 null
        streamMetadata - 将用于写入的 IIOMetadata对象,或 null
        imageMetadata - 将用于写入的 IIOMetadata对象,或 null
        结果
        Dimension秒的阵列至少有两个,即 null
      • canWriteRasters

        public boolean canWriteRasters​()
        返回true如果采取方法IIOImage参数能够与处理的Raster (相对于RenderedImage )源图像。 如果此方法返回false ,那么这些方法将抛出UnsupportedOperationException如果与供给IIOImage含有Raster

        默认实现返回false

        结果
        true如果支持 Raster源。
      • write

        public abstract void write​(IIOMetadata streamMetadata,
                                   IIOImage image,
                                   ImageWriteParam param)
                            throws IOException
        将包含单个图像和关联流以及图像元数据和缩略图的完整图像流附加到输出。 包括任何必要的标题信息。 如果输出为ImageOutputStream ,则其当前查找位置之前的现有内容不受影响,无需读取或写入。

        必须使用setOutput方法预先设置输出。

        可以可选地提供流元数据; 如果是null ,将使用默认流元数据。

        如果canWriteRasters返回true ,则IIOImage可能包含一个Raster源码。 否则,它必须包含一个RenderedImage源。

        如果需要,提供的缩略图将被调整大小,超过支持的数字的任何缩略图将被忽略。 如果格式需要未提供的附加缩略图,则作者应在内部生成它们。

        可以可选地提供ImageWriteParam来控制写入过程。 如果paramnull ,则将使用默认的写入参数。

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        参数
        streamMetadata - 表示流元数据的 IIOMetadata对象,或 null使用默认值。
        image - 包含要写入的图像,缩略图和元数据的 IIOImage对象。
        param - 一个 ImageWriteParamnull使用默认值 ImageWriteParam
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 image包含一个 RastercanWriteRasters返回 false
        IllegalArgumentException - 如果 imagenull
        IOException - 写入时是否发生错误。
      • write

        public void write​(IIOImage image)
                   throws IOException
        将含有默认元数据和缩略图的单个图像的完整图像流附加到输出。 这个方法是write(null, image, null)的缩写。
        参数
        image - 一个包含要写入的图像,缩略图和元数据的 IIOImage对象。
        异常
        IllegalStateException - 如果输出未设置。
        IllegalArgumentException - 如果 imagenull
        UnsupportedOperationException - 如果 image包含一个 RastercanWriteRasters返回 false
        IOException - 如果写入时发生错误。
      • write

        public void write​(RenderedImage image)
                   throws IOException
        将包含单个图像的完整图像流附加到输出的默认元数据和缩略图。 该方法是write(null, new IIOImage(image, null, null), null)的缩写。
        参数
        image - a RenderedImage待写。
        异常
        IllegalStateException - 如果输出未设置。
        IllegalArgumentException - 如果 imagenull
        IOException - 如果写入时发生错误。
      • canWriteSequence

        public boolean canWriteSequence​()
        如果作者能够将图像附加到已经包含标题信息和可能的先前图像的图像流中,则返回true

        如果canWriteSequence返回false ,则writeToSequenceendWriteSequence将会抛出一个UnsupportedOperationException

        默认实现返回false

        结果
        true如果可以依次附加图像。
      • prepareWriteSequence

        public void prepareWriteSequence​(IIOMetadata streamMetadata)
                                  throws IOException
        使用提供的流元数据对象准备流以接受一系列后续的writeToSequence调用。 如果元数据应该在图像数据之前,则会将元数据写入流中。 如果参数为null ,则使用默认流元数据。

        如果输出为ImageOutputStream ,则刷新当前查找位置之前的输出的现有内容,并且不需要可读写。 如果格式要求endWriteSequence能够快退来补丁头信息,例如在单个TIFF文件中的一系列图像,则由该方法写入的元数据必须保留在流的可写部分。 其他格式可以在此方法之后和每个图像之后刷新流。

        如果canWriteSequence返回false ,这个方法会抛出一个UnsupportedOperationException

        必须使用setOutput方法事先设置输出。

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则抛出一个UnsupportedOperationException

        参数
        streamMetadata - 流元数据对象,或 null
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canWriteSequence返回 false
        IOException - 如果写入流元数据发生错误。
      • writeToSequence

        public void writeToSequence​(IIOImage image,
                                    ImageWriteParam param)
                             throws IOException
        将单个图像和可能关联的元数据和缩略图附加到输出。 如果输出为ImageOutputStream ,则当前查找位置之前的输出的现有内容可能被刷新,并且不需要读取或写入,除非当endWriteSequence时插件需要能够修补标题信息( 例如 TIFF)。

        如果canWriteSequence返回false ,这个方法会抛出一个UnsupportedOperationException

        必须使用setOutput方法预先设置输出。

        prepareWriteSequence必须事先调用,或者抛出一个IllegalStateException

        如果canWriteRasters返回true ,则IIOImage可能包含Raster源。 否则,它必须包含一个RenderedImage源。

        如果需要,提供的缩略图将被调整大小,超过支持的数字的任何缩略图将被忽略。 如果格式需要未提供的附加缩略图,写入程序将在内部生成它们。

        可以可选地提供ImageWriteParam以控制写入过程。 如果paramnull ,将使用默认的写参数。

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则会抛出一个UnsupportedOperationException

        参数
        image - 包含要写入的图像,缩略图和元数据的 IIOImage对象。
        param - 一个 ImageWriteParam ,或 null使用默认值 ImageWriteParam
        异常
        IllegalStateException - 如果输出未设置,或 prepareWriteSequence未被调用。
        UnsupportedOperationException - 如果 canWriteSequence返回 false
        IllegalArgumentException - 如果 imagenull
        UnsupportedOperationException - 如果 image包含一个 RastercanWriteRasters返回 false
        IOException - 写入时是否发生错误。
      • endWriteSequence

        public void endWriteSequence​()
                              throws IOException
        完成prepareWriteSequence开始的一系列图像的写作。 写出在图像序列结尾应该出现的任何流元数据,并且如果需要,则在序列开始处的任何头信息被修补。 如果输出是一个ImageOutputStream ,序列结尾的流元数据的数据被刷新,不需要读写。

        如果canWriteSequence返回false ,这个方法会抛出一个UnsupportedOperationException

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则会抛出一个UnsupportedOperationException

        异常
        IllegalStateException - 如果输出未设置,或 prepareWriteSequence尚未被调用。
        UnsupportedOperationException - 如果 canWriteSequence返回 false
        IOException - 写入时是否发生错误。
      • canReplaceStreamMetadata

        public boolean canReplaceStreamMetadata​()
                                         throws IOException
        如果可以替换已经存在于输出中的流元数据,则返回true

        默认的实现抛出IllegalStateException如果输出为null ,否则返回false

        结果
        true如果允许流元数据的替换。
        异常
        IllegalStateException - 如果输出未设置。
        IOException - 如果在查询期间发生I / O错误。
      • replaceStreamMetadata

        public void replaceStreamMetadata​(IIOMetadata streamMetadata)
                                   throws IOException
        用新信息替换输出中的流元数据。 如果输出是一个ImageOutputStream ,则流的先前内容被检查并且可能被编辑以为新数据腾出空间。 输出的所有先前内容必须可用于阅读和写入。

        如果canReplaceStreamMetadata返回false ,将抛出一个UnsupportedOperationException

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则会抛出一个UnsupportedOperationException

        参数
        streamMetadata - 表示流元数据的 IIOMetadata对象,或 null使用默认值。
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果canReplaceStreamMetadata返回false 模式不包括
        IOException - 写入时是否发生错误。
      • canReplaceImageMetadata

        public boolean canReplaceImageMetadata​(int imageIndex)
                                        throws IOException
        返回true ,如果它是可以替换与现有的图像与索引相关联的图像元数据imageIndex 如果此方法返回false ,则呼叫replaceImageMetadata(imageIndex)将会抛出一个UnsupportedOperationException

        不支持任何图像元数据替换的作者可以返回false而不对索引执行边界检查。

        默认的实现抛出IllegalStateException如果输出为null ,否则返回false不检查的值imageIndex

        参数
        imageIndex - 要替换其元数据的图像的索引。
        结果
        true如果可以替换给定图像的图像元数据。
        异常
        IllegalStateException - 如果输出未设置。
        IndexOutOfBoundsException - 如果作者一般支持图像元数据替换,但 imageIndex小于0或大于最大可用索引。
        IOException - 如果在查询期间发生I / O错误。
      • replaceImageMetadata

        public void replaceImageMetadata​(int imageIndex,
                                         IIOMetadata imageMetadata)
                                  throws IOException
        替换与现有图像相关联的图像元数据。

        如果canReplaceImageMetadata(imageIndex)返回false ,则会抛出UnsupportedOperationException

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则会抛出一个UnsupportedOperationException

        参数
        imageIndex - 要替换其元数据的图像的索引。
        imageMetadata - 表示图像元数据的 IIOMetadata对象,或 null
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canReplaceImageMetadata返回 false
        IndexOutOfBoundsException - 如果 imageIndex小于0或大于最大可用索引。
        IOException - 写入时是否发生错误。
      • canInsertImage

        public boolean canInsertImage​(int imageIndex)
                               throws IOException
        如果作者支持在给定索引处插入新图像,则返回true 索引大于或等于插入索引的现有图像的索引将增加1. imageIndex-1值可用于表示大于当前最大索引的索引。

        不支持任何图像插入的作者可能会返回false而不对索引执行边界检查。

        默认的实现抛出IllegalStateException如果输出为null ,否则返回false不检查的值imageIndex

        参数
        imageIndex - 要插入图像的索引。
        结果
        如果可以在给定的索引处插入图像, true
        异常
        IllegalStateException - 如果输出未设置。
        IndexOutOfBoundsException - 如果作者一般支持图像插入,但 imageIndex小于-1或大于最大可用索引。
        IOException - 如果在查询期间发生I / O错误。
      • writeInsert

        public void writeInsert​(int imageIndex,
                                IIOImage image,
                                ImageWriteParam param)
                         throws IOException
        将新图像插入到现有图像流中。 索引大于imageIndex现有图像被保留,并且它们的索引各自增加1.对于imageIndex -1的值可以用于表示大于先前最大索引的索引; 也就是说,它将使图像逻辑地附加到序列的末尾。 如果输出是一个ImageOutputStream ,整个流必须是可读写的。

        如果canInsertImage(imageIndex)返回false ,将抛出UnsupportedOperationException

        可以可选地提供ImageWriteParam来控制写入过程。 如果paramnull ,将使用默认的写参数。

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        默认的实现抛出IllegalStateException如果输出为null ,否则会引发UnsupportedOperationException

        参数
        imageIndex - 写入图像的索引。
        image - 包含要写入的图像,缩略图和元数据的 IIOImage对象。
        param - 一个 ImageWriteParam ,或 null使用默认 ImageWriteParam
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canInsertImage(imageIndex)返回 false
        IllegalArgumentException - 如果 imagenull
        IndexOutOfBoundsException - 如果 imageIndex小于-1或大于最大可用索引。
        UnsupportedOperationException - 如果 image包含一个 RastercanWriteRasters返回 false
        IOException - 写入时是否发生错误。
      • canRemoveImage

        public boolean canRemoveImage​(int imageIndex)
                               throws IOException
        如果作者支持在给定索引处删除现有图像,则返回true 索引大于插入索引的现有图像的索引将减少1。

        不支持任何图像删除的作者可以返回false而不对索引执行边界检查。

        默认的实现抛出IllegalStateException如果输出为null ,否则返回false不检查的值imageIndex

        参数
        imageIndex - 要删除的图像的索引。
        结果
        true如果可以删除给定的图像。
        异常
        IllegalStateException - 如果输出未设置。
        IndexOutOfBoundsException - 如果作者一般支持图像删除,但 imageIndex小于0或大于最大可用索引。
        IOException - 如果在查询期间发生I / O错误。
      • removeImage

        public void removeImage​(int imageIndex)
                         throws IOException
        从流中删除图像。

        如果canRemoveImage(imageIndex)返回false,将抛出一个UnsupportedOperationException

        删除可能会导致或可能不会导致实际文件大小的减少。

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则会抛出一个UnsupportedOperationException

        参数
        imageIndex - 要删除的图像的索引。
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canRemoveImage(imageIndex)返回 false
        IndexOutOfBoundsException - 如果 imageIndex小于0或大于最大可用索引。
        IOException - 如果在删除期间发生I / O错误。
      • canWriteEmpty

        public boolean canWriteEmpty​()
                              throws IOException
        如果作者支持写入一个包含未定义像素值的单个图像的完整图像流,并将相关元数据和缩略图写入输出,则返回true 可以通过将来调用replacePixels方法来定义像素值。 如果输出为ImageOutputStream ,则其当前查找位置之前的现有内容不受影响,无需读取或写入。

        默认的实现抛出IllegalStateException如果输出为null ,否则返回false

        结果
        true如果写入完整的图像流与后面要定义的内容被支持。
        异常
        IllegalStateException - 如果输出未设置。
        IOException - 查询期间是否发生I / O错误。
      • prepareWriteEmpty

        public void prepareWriteEmpty​(IIOMetadata streamMetadata,
                                      ImageTypeSpecifier imageType,
                                      int width,
                                      int height,
                                      IIOMetadata imageMetadata,
                                      List<? extends BufferedImage> thumbnails,
                                      ImageWriteParam param)
                               throws IOException
        开始将一个完整的图像流写入到包含未定义像素值的单个图像和关联的元数据和缩略图中。 像素值将由将来调用replacePixels方法定义。 如果输出为ImageOutputStream ,则其当前查找位置之前的现有内容不受影响,不需要读取或写入。

        endWriteEmpty发生呼叫之前,写入不完整。 调用prepareReplacePixelsreplacePixels ,并endReplacePixels可调用之间发生prepareWriteEmptyendWriteEmpty 但是,对prepareWriteEmpty调用不能嵌套,并且调用prepareWriteEmptyprepareInsertEmpty可能不会散置。

        如果canWriteEmpty返回false ,将抛出UnsupportedOperationException

        可以可选地提供一个ImageWriteParam来控制写入过程。 如果paramnull ,则将使用默认的写参数。

        如果提供的ImageWriteParam包含此作者不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        默认的实现抛出IllegalStateException如果输出为null ,否则会引发UnsupportedOperationException

        参数
        streamMetadata - 表示流元数据的 IIOMetadata对象,或 null使用默认值。
        imageType - 描述图像布局的 ImageTypeSpecifier
        width - 图像的宽度。
        height - 图像的高度。
        imageMetadata - 表示图像元数据的 IIOMetadata对象,或 null
        thumbnails - 一个 ListBufferedImage此图像的缩略图,或 null
        param - 一个 ImageWriteParamnull使用默认的 ImageWriteParam
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canWriteEmpty返回 false
        IllegalStateException - 如果以前的电话是 prepareWriteEmpty ,而没有对 endWriteEmpty的相应调用。
        IllegalStateException - 如果以前的电话是 prepareInsertEmpty ,而没有对 endInsertEmpty的相应调用。
        IllegalArgumentException - 如果 imageTypenullthumbnails包含 null引用或 BufferedImage的对象。
        IllegalArgumentException - 如果宽度或高度小于1。
        IOException - 写入时是否发生I / O错误。
      • endWriteEmpty

        public void endWriteEmpty​()
                           throws IOException
        完成了以前致电prepareWriteEmpty开始的新图像的写作。

        如果canWriteEmpty()返回false ,将抛出UnsupportedOperationException

        默认的实现抛出IllegalStateException如果输出为null ,否则会引发UnsupportedOperationException

        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canWriteEmpty(imageIndex)返回 false
        IllegalStateException - 如果以前拨打 prepareWriteEmpty没有对应的电话 endWriteEmpty尚未做出。
        IllegalStateException - 如果先前致电 prepareInsertEmpty没有相应的电话 endInsertEmpty已经做出了。
        IllegalStateException - 如果未对 prepareReiplacePixels进行匹配调用, endReplacePixels拨打 endReplacePixels
        IOException - 写入时是否发生I / O错误。
      • canInsertEmpty

        public boolean canInsertEmpty​(int imageIndex)
                               throws IOException
        如果作者支持在给定索引处插入新的空图像,则返回true 图像的像素值未定义,可以使用replacePixels方法指定。 索引大于或等于插入索引的现有图像的索引将增加1. imageIndex-1值可用于表示大于当前最大索引的索引。

        不支持插入空图像的作者可能会返回false而不对索引执行边界检查。

        默认的实现抛出IllegalStateException如果输出为null ,否则返回false不检查的值imageIndex

        参数
        imageIndex - 要插入图像的索引。
        结果
        true如果可以在给定索引处插入空图像。
        异常
        IllegalStateException - 如果输出未设置。
        IndexOutOfBoundsException - 如果作者一般支持空图像插入,但 imageIndex小于-1或大于最大可用索引。
        IOException - 如果在查询期间发生I / O错误。
      • prepareInsertEmpty

        public void prepareInsertEmpty​(int imageIndex,
                                       ImageTypeSpecifier imageType,
                                       int width,
                                       int height,
                                       IIOMetadata imageMetadata,
                                       List<? extends BufferedImage> thumbnails,
                                       ImageWriteParam param)
                                throws IOException
        开始将未定义像素值的新图像插入到现有图像流中。 索引大于imageIndex现有图像被保留,其索引各自增加1.可以使用imageIndex的值表示大于前一大索引的索引; 也就是说,它将使图像逻辑地附加到序列的末尾。 如果输出为ImageOutputStream ,则整个流都必须是可读写的。

        以后可以使用replacePixels方法提供图像内容。 调用endInsertEmpty之前,插入不完整。 调用prepareReplacePixelsreplacePixels ,并endReplacePixels可调用之间发生prepareInsertEmptyendInsertEmpty 但是,拨打prepareInsertEmpty不能嵌套,而对prepareWriteEmptyprepareInsertEmpty可能不会散布。

        如果canInsertEmpty(imageIndex)返回false ,将抛出UnsupportedOperationException

        可以可选地提供ImageWriteParam来控制写入过程。 如果paramnull ,将使用默认的写参数。

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或特定于格式的设置),它们将被忽略。

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则抛出一个UnsupportedOperationException

        参数
        imageIndex - 写入图像的索引。
        imageType - 描述图像布局的 ImageTypeSpecifier
        width - 图像的宽度。
        height - 图像的高度。
        imageMetadata - 表示图像元数据的 IIOMetadata对象,或 null
        thumbnails - a ListBufferedImage此图片的缩略图,或 null
        param - 一个 ImageWriteParamnull使用默认值 ImageWriteParam
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canInsertEmpty(imageIndex)返回 false
        IndexOutOfBoundsException - 如果 imageIndex小于-1或大于最大可用索引。
        IllegalStateException - 如果以前的电话是 prepareInsertEmpty ,而没有对 endInsertEmpty的相应调用。
        IllegalStateException - 如果以前的电话是 prepareWriteEmpty ,而没有对 endWriteEmpty的相应调用。
        IllegalArgumentException - 如果 imageTypenullthumbnails包含 null引用或 BufferedImage的对象。
        IllegalArgumentException - 如果宽度或高度小于1。
        IOException - 写入时是否发生I / O错误。
      • endInsertEmpty

        public void endInsertEmpty​()
                            throws IOException
        完成插入一个以前调用prepareInsertEmpty开始的新映像。

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则会抛出一个UnsupportedOperationException

        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canInsertEmpty(imageIndex)返回 false
        IllegalStateException - 如果以前没有对 prepareInsertEmpty进行相应调用的呼叫,则没有进行 endInsertEmpty
        IllegalStateException - 如果先前致电 prepareWriteEmpty没有相应的调用 endWriteEmpty已经做出了。
        IllegalStateException -如果一个呼叫 prepareReplacePixels已经没有匹配的呼叫作出 endReplacePixels
        IOException - 写入时是否发生I / O错误。
      • canReplacePixels

        public boolean canReplacePixels​(int imageIndex)
                                 throws IOException
        如果作者允许使用replacePixels方法替换给定图像的像素,则返回true

        不支持任何像素替换的作者可能会返回false而不对索引执行边界检查。

        默认的实现抛出IllegalStateException如果输出为null ,否则返回false不检查的值imageIndex

        参数
        imageIndex - 要替换其像素的图像的索引。
        结果
        true如果可以替换给定图像的像素。
        异常
        IllegalStateException - 如果输出未设置。
        IndexOutOfBoundsException - 如果作者一般支持像素替换,但 imageIndex小于0或大于最大可用索引。
        IOException - 如果在查询期间发生I / O错误。
      • prepareReplacePixels

        public void prepareReplacePixels​(int imageIndex,
                                         Rectangle region)
                                  throws IOException
        准备作者处理一系列对replacePixels方法的电话。 受影响的像素区域将与所提供的像素区域相对

        如果canReplacePixels返回false ,将会抛出UnsupportedOperationException

        默认的实现抛出IllegalStateException如果输出为null ,否则会引发UnsupportedOperationException

        参数
        imageIndex - 要替换其像素的图像的索引。
        region - 将用于剪辑未来像素区域的 Rectangle
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canReplacePixels(imageIndex)返回 false
        IndexOutOfBoundsException - 如果 imageIndex小于0或大于最大可用索引。
        IllegalStateException -如果以前调用 prepareReplacePixels没有相应地调用 endReplacePixels嵌套是不允许的)。
        IllegalArgumentException - 如果 regionnull或宽度或高度小于1。
        IOException - 在准备过程中是否发生I / O错误。
      • replacePixels

        public void replacePixels​(RenderedImage image,
                                  ImageWriteParam param)
                           throws IOException
        用给定图像的一部分替换已经存在于输出中的图像的一部分。 图像数据必须匹配或可转换为现有图像的图像布局。

        目的地区域在param参数中指定,并将被剪切到图像边界和提供给prepareReplacePixels的区域。 源的至少一个像素不能被裁剪,或抛出异常。

        可以可选地提供一个ImageWriteParam来控制写入过程。 如果paramnull ,将使用默认的写参数。

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        此方法只能在调用prepareReplacePixels后调用,否则将抛出IllegalStateException

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则抛出一个UnsupportedOperationException

        参数
        image - 一个包含源像素的 RenderedImage
        param - 一个 ImageWriteParam ,或 null使用默认值 ImageWriteParam
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canReplacePixels(imageIndex)返回 false
        IllegalStateException - 如果没有以前的呼叫 prepareReplacePixels没有匹配的呼叫 endReplacePixels
        IllegalArgumentException - 如果满足以下条件:
        • imagenull
        • 相交区域不包含至少一个像素。
        • image的布局不匹配,或者这个作者不能将其转换为现有的图像布局。
        IOException - 写入时是否发生I / O错误。
      • replacePixels

        public void replacePixels​(Raster raster,
                                  ImageWriteParam param)
                           throws IOException
        用给定的Raster的一部分替换已经存在于输出中的图像的一部分。 图像数据必须匹配或可转换为现有图像的图像布局。

        可以可选地提供ImageWriteParam来控制写入过程。 如果paramnull ,则将使用默认的写参数。

        目标区域在param参数中指定,并将被剪切到图像边界和提供给prepareReplacePixels的区域。 源的至少一个像素不能被裁剪,或抛出异常。

        如果提供的ImageWriteParam包含此写入程序不支持的可选设置值( 例如逐行编码或任何特定于格式的设置),它们将被忽略。

        此方法只能在调用prepareReplacePixels后调用,否则将抛出IllegalStateException

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则抛出一个UnsupportedOperationException

        参数
        raster - 包含源像素的 Raster
        param - 一个 ImageWriteParamnull使用默认值 ImageWriteParam
        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canReplacePixels(imageIndex)返回 false
        IllegalStateException - 如果以前没有拨打 prepareReplacePixels而没有匹配的呼叫到 endReplacePixels
        UnsupportedOperationException - 如果 canWriteRasters返回 false
        IllegalArgumentException - 如果满足以下条件:
        • rasternull
        • 相交区域不包含至少一个像素。
        • raster的布局不匹配,或者这个作者不能将其转换为现有的图像布局。
        IOException - 写入时是否发生I / O错误。
      • endReplacePixels

        public void endReplacePixels​()
                              throws IOException
        终止一个呼叫序列到replacePixels

        如果canReplacePixels返回false ,将会抛出UnsupportedOperationException

        如果输出为null ,默认实现会抛出一个IllegalStateException ,否则抛出一个UnsupportedOperationException

        异常
        IllegalStateException - 如果输出未设置。
        UnsupportedOperationException - 如果 canReplacePixels(imageIndex)返回 false
        IllegalStateException - 如果以前没有拨打 prepareReplacePixels没有匹配的呼叫到 endReplacePixels
        IOException - 写入时是否发生I / O错误。
      • abort

        public void abort​()
        请求中止任何当前的写入操作。 中止输出后的内容将不确定。

        作者在每次写入操作开始时应调用clearAbortRequest ,并在写入期间定期轮询abortRequested的值。

      • abortRequested

        protected boolean abortRequested​()
        返回 true是否已经作出中止当前写入操作的请求自从writer被实例化或 clearAbortRequest被调用。
        结果
        true如果当前写入操作应该中止。
        另请参见:
        abort()clearAbortRequest()
      • clearAbortRequest

        protected void clearAbortRequest​()
        清除任何先前的中止请求。 此方法被调用后, abortRequested将返回false
        另请参见:
        abort()abortRequested()
      • addIIOWriteWarningListener

        public void addIIOWriteWarningListener​(IIOWriteWarningListener listener)
        IIOWriteWarningListener添加到已注册的警告监听器列表中。 如果listenernull ,则不会抛出异常,也不会采取任何措施。 发送给给定侦听器的消息将被本地化,如果可能,匹配当前的Locale 如果没有设置Locale ,警告消息可能会按照写入者的身份进行本地化。
        参数
        listener - 要注册的 IIOWriteWarningListener
        另请参见:
        removeIIOWriteWarningListener(javax.imageio.event.IIOWriteWarningListener)
      • removeAllIIOWriteWarningListeners

        public void removeAllIIOWriteWarningListeners​()
        删除所有当前注册的IIOWriteWarningListener对象。

        默认实现将warningListenerswarningLocales实例变量设置为null

      • removeAllIIOWriteProgressListeners

        public void removeAllIIOWriteProgressListeners​()
        删除所有当前注册的IIOWriteProgressListener对象。

        默认实现将progressListeners实例变量设置为null

      • processImageStarted

        protected void processImageStarted​(int imageIndex)
        通过调用他们的imageStarted方法,将所有注册的IIOWriteProgressListener的图像写入的开始广播。 子类可以方便地使用这种方法。
        参数
        imageIndex - 要写入的图像的索引。
      • processImageProgress

        protected void processImageProgress​(float percentageDone)
        通过调用其imageProgress方法,将目前的图像完成百分比广播到所有注册的IIOWriteProgressListener 子类可以方便地使用这种方法。
        参数
        percentageDone - 目前的完成百分比,为 float
      • processImageComplete

        protected void processImageComplete​()
        通过调用imageComplete方法,广播完成对所有注册的IIOWriteProgressListener的图像写入。 子类可以方便地使用这种方法。
      • processThumbnailStarted

        protected void processThumbnailStarted​(int imageIndex,
                                               int thumbnailIndex)
        通过调用其thumbnailStarted方法,将所有注册的IIOWriteProgressListener的缩略图写入的开始广播。 子类可以方便地使用这种方法。
        参数
        imageIndex - 与缩略图关联的图像的索引。
        thumbnailIndex - 缩略图的索引。
      • processThumbnailProgress

        protected void processThumbnailProgress​(float percentageDone)
        通过调用其thumbnailProgress方法将所有已注册的IIOWriteProgressListener的缩略图完成的当前百分比广播。 子类可以方便地使用这种方法。
        参数
        percentageDone - 目前的完成百分比,为 float
      • processThumbnailComplete

        protected void processThumbnailComplete​()
        通过调用thumbnailComplete方法,广播完成对所有注册的IIOWriteProgressListener的缩略图写入。 子类可以方便地使用这种方法。
      • processWriteAborted

        protected void processWriteAborted​()
        通过调用它们的writeAborted方法来广播已经中止所有注册的所有注册的IIOWriteProgressListener 子类可以方便地使用这种方法。
      • processWarningOccurred

        protected void processWarningOccurred​(int imageIndex,
                                              String warning)
        通过致电warningOccurred方式向所有注册的IIOWriteWarningListener发送警告消息。 子类可以方便地使用这种方法。
        参数
        imageIndex - 发生警告的图像的索引。
        warning - 警告信息。
        异常
        IllegalArgumentException - 如果 warningnull
      • processWarningOccurred

        protected void processWarningOccurred​(int imageIndex,
                                              String baseName,
                                              String keyword)
        广播本地化警告消息给所有注册IIOWriteWarningListener通过调用它们的S warningOccurred法从拍摄字符串ResourceBundle 子类可以方便地使用这种方法。
        参数
        imageIndex - 发生警告的图像的索引。
        baseName - 包含本地化警告消息的一组 ResourceBundle s的基本名称。
        keyword - 用于索引 ResourceBundle秒内的警告消息的关键字。
        异常
        IllegalArgumentException - 如果 baseNamenull
        IllegalArgumentException - 如果 keywordnull
        IllegalArgumentException - 如果不适合,可能会找到 ResourceBundle
        IllegalArgumentException - 如果在位于的位置 ResourceBundle命名的资源 ResourceBundle
        IllegalArgumentException - 如果从 ResourceBundle检索的对象不是 String
      • reset

        public void reset​()
        ImageWriter恢复到初始状态。

        默认实现调用setOutput(null)setLocale(null)removeAllIIOWriteWarningListeners()removeAllIIOWriteProgressListeners() ,并clearAbortRequest

      • dispose

        public void dispose​()
        允许释放此对象持有的任何资源。 在调用此方法之后调用其他方法(不包括finalize )的结果未定义。

        当应用程序知道他们将不再使用此方法时,调用此方法很重要ImageWriter 否则,作者可以继续无限期地持有资源。

        超类中的这个方法的默认实现什么都不做。 子类实现应确保释放所有资源,特别是本地资源。