模块  java.desktop
软件包  javax.imageio

Class ImageWriter

  • 实现的所有接口
    ImageTranscoder

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

    ImageWriter对象通常由服务提供者类为特定格式实例化。 服务提供者类在IIORegistry中注册,使用它们进行格式识别和可用格式读取器和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)的构造(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方法getOutputTypes ; 大多数编写器将返回仅包含ImageOutputStream.class的单元素数组,以指示它们仅接受ImageOutputStream

        在检查output与原始提供程序通告的类集(如果有)之后,默认实现将output实例变量设置为值output

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

        public Object getOutput()
        返回最近一次调用setOutput方法设置的ImageOutputStream或其他Object 如果未设置目标,则返回null

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

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

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

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

        结果
        Locale的数组, Locale setLocalenull参数。
      • setLocale

        public void setLocale​(Locale locale)
        将此ImageWriter的当前Locale设置为给定值。 null将删除任何先前的设置,并指示null应按其认为合适的方式进行本地化。

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

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

        public Locale getLocale()
        返回当前设置Locale ,或null如果没有设置。

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

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

        public ImageWriteParam getDefaultWriteParam()
        返回包含默认值的此文件格式的相应类型的新ImageWriteParam对象,即,如果未指定ImageWriteParam对象,则将使用这些值。 这可以作为调整一些参数的起点,也可以单独保留默认设置。

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

        单个插件可能会返回ImageWriteParam的实例,并启用了其他可选功能,或者它们可能会返回特定于插件的子类ImageWriteParam

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

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

        可能会提供可选的ImageWriteParam以用于可能影响流元数据结构的情况。

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

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

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

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

        可以提供可选的ImageWriteParam用于可能影响图像元数据结构的情况。

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

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

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

        对于可能影响缩略图处理的情况,可以选择提供ImageWriteParam

        如果提供的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的数组,指示缩略图图像的合法大小范围,因为它们将在输出文件或流中进行编码。 这些信息仅供参考; 作者将根据需要调整任何提供的缩略图的大小。

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

        可选择提供ImageWriteParam以用于可能影响缩略图处理的情况。

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

        默认实现返回null

        参数
        imageType -一个 ImageTypeSpecifier指示图像的类型将被写入,或 null
        param -该 ImageWriteParam将被用于书写,或 null
        streamMetadata - 将用于写入的 IIOMetadata对象,或 null
        imageMetadata - 将用于写入的 IIOMetadata对象,或 null
        结果
        Dimension的数组,偶数长度至少为2,或 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包含此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 - RenderedImage
        异常
        IllegalStateException - 如果尚未设置输出。
        IllegalArgumentException - 如果 imagenull
        IOException - 如果在写入期间发生错误。
      • canWriteSequence

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

        如果canWriteSequence返回falsewriteToSequenceendWriteSequence将抛出UnsupportedOperationException

        默认实现返回false

        结果
        true如果图像可以按顺序附加。
      • prepareWriteSequence

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

        如果输出是ImageOutputStream ,则刷新当前搜索位置之前的输出的现有内容,并且不需要是可读写的。 如果格式要求endWriteSequence能够回卷以修补标头信息,例如单个TIFF文件中的图像序列,则此方法写入的元数据必须保留在流的可写部分中。 其他格式可以在此方法之后和每个图像之后刷新流。

        如果canWriteSequence返回false ,则此方法将抛出UnsupportedOperationException

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

        默认的实现抛出IllegalStateException如果输出为null ,否则将引发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包含此ImageWriteParam不支持的可选设置值( 例如,渐进式编码或任何特定于格式的设置),则将忽略它们。

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

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

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

        如果canWriteSequence返回false ,则此方法将抛出UnsupportedOperationException

        默认的实现抛出IllegalStateException如果输出为null ,否则将引发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

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

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

        public boolean canReplaceImageMetadata​(int imageIndex)                                throws IOException
        返回true如果能够替换与现有的图像与索引相关联的图像元数据imageIndex 如果此方法返回false ,则对replaceImageMetadata(imageIndex)的调用将抛出UnsupportedOperationException

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

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

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

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

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

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

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

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

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

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

        参数
        imageIndex - 要插入图像的索引。
        结果
        true如果可以在给定索引处插入图像。
        异常
        IllegalStateException - 如果尚未设置输出。
        IndexOutOfBoundsException - 如果 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包含此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
        如果writer支持删除给定索引处的现有图像,则返回true 索引大于插入索引的现有图像的索引将减少1。

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

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

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

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

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

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

        默认的实现抛出IllegalStateException如果输出为null ,否则将引发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之前,写入操作尚未完成。 拨打prepareReplacePixelsreplacePixelsendReplacePixels可调用之间发生prepareWriteEmptyendWriteEmpty 然而,拨打prepareWriteEmpty不能嵌套,并呼吁prepareWriteEmptyprepareInsertEmpty可能不被穿插。

        如果canWriteEmpty返回false ,则将抛出UnsupportedOperationException

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

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

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

        参数
        streamMetadata - 表示流元数据的 IIOMetadata对象,或使用默认值的 null
        imageType - 描述图像布局的 ImageTypeSpecifier
        width - 图像的宽度。
        height - 图像的高度。
        imageMetadata - 表示图像元数据的 IIOMetadata对象,或 null
        thumbnails - ListBufferedImage这个图像的缩略图,或 null
        param -一个 ImageWriteParam ,或 null使用默认 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调用 endInsertEmpty
        IllegalStateException -如果一个呼叫 prepareReiplacePixels已经没有匹配的呼叫作出 endReplacePixels
        IOException - 如果在写入期间发生I / O错误。
      • canInsertEmpty

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

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

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

        参数
        imageIndex - 要插入图像的索引。
        结果
        true如果可以在给定索引处插入空图像。
        异常
        IllegalStateException - 如果尚未设置输出。
        IndexOutOfBoundsException - 如果 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的-1来表示比前一个最大索引大的索引; 也就是说,它会使图像以逻辑方式附加到序列的末尾。 如果输出是ImageOutputStream ,则整个流必须是可读写的。

        稍后可以使用replacePixels方法提供图像内容。 在调用endInsertEmpty之前,插入尚未完成。 拨打prepareReplacePixelsreplacePixelsendReplacePixels可调用之间发生prepareInsertEmptyendInsertEmpty 然而,拨打prepareInsertEmpty不能嵌套,并呼吁prepareWriteEmptyprepareInsertEmpty可能不被穿插。

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

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

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

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

        参数
        imageIndex - 写入图像的索引。
        imageType - 描述图像布局的 ImageTypeSpecifier
        width - 图像的宽度。
        height - 图像的高度。
        imageMetadata - 表示图像元数据的 IIOMetadata对象,或 null
        thumbnails - List of BufferedImage到这个图片的缩略图,或 null
        param -一个 ImageWriteParam ,或 null使用默认 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开始的新图像。

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

        异常
        IllegalStateException - 如果尚未设置输出。
        UnsupportedOperationException - 如果 canInsertEmpty(imageIndex)返回 false
        IllegalStateException - 如果之前没有对 prepareInsertEmpty进行相应调用的 endInsertEmpty则尚未拨打。
        IllegalStateException - 如果之前没有对 prepareWriteEmpty进行相应调用, endWriteEmpty调用 endWriteEmpty
        IllegalStateException -如果一个呼叫 prepareReplacePixels已经没有匹配的呼叫作出 endReplacePixels
        IOException - 如果在写入期间发生I / O错误。
      • canReplacePixels

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

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

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

        参数
        imageIndex - 要替换像素的图像的索引。
        结果
        true是否可以替换给定图像的像素。
        异常
        IllegalStateException - 如果尚未设置输出。
        IndexOutOfBoundsException - 如果 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包含此ImageWriteParam不支持的可选设置值( 例如,渐进式编码或任何特定于格式的设置),则将忽略它们。

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

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

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

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

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

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

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

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

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

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

        public void endReplacePixels()                      throws IOException
        终止一系列调用replacePixels

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

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

        异常
        IllegalStateException - 如果尚未设置输出。
        UnsupportedOperationException - 如果 canReplacePixels(imageIndex)返回 false
        IllegalStateException - 如果之前没有调用 prepareReplacePixels而没有匹配的调用 endReplacePixels
        IOException - 如果在写入期间发生I / O错误。
      • abort

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

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

      • abortRequested

        protected boolean abortRequested()
        如果在实例化 clearAbortRequestclearAbortRequest已作出中止当前写入操作的请求,则返回 true
        结果
        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 s。 子类可以使用此方法作为方便。
        参数
        percentageDone - 当前完成百分比,为 float
      • processThumbnailComplete

        protected void processThumbnailComplete()
        通过调用thumbnailComplete方法向所有已注册的IIOWriteProgressListener广播缩略图写入的广播。 子类可以使用此方法作为方便。
      • processWriteAborted

        protected void processWriteAborted()
        通过调用writeAborted方法广播写入已中止到所有已注册的IIOWriteProgressListener s。 子类可以使用此方法作为方便。
      • processWarningOccurred

        protected void processWarningOccurred​(int imageIndex,                                      String warning)
        通过调用warningOccurred方法向所有已注册的IIOWriteWarningListener广播警告消息。 子类可以使用此方法作为方便。
        参数
        imageIndex - 发生警告的图像的索引。
        warning - 警告消息。
        异常
        IllegalArgumentException - 如果 warningnull
      • processWarningOccurred

        protected void processWarningOccurred​(int imageIndex,                                      String baseName,                                      String keyword)
        通过使用从ResourceBundle获取的字符串调用其warningOccurred方法,向所有已注册的IIOWriteWarningListener广播本地化警告消息。 子类可以使用此方法作为方便。
        参数
        imageIndex - 发生警告的图像的索引。
        baseName - 包含本地化警告消息的一组 ResourceBundle的基本名称。
        keyword - 用于索引 ResourceBundle集合中的警告消息的关键字。
        异常
        IllegalArgumentException - 如果 baseNamenull
        IllegalArgumentException - 如果 keywordnull
        IllegalArgumentException - 如果找不到合适的 ResourceBundle
        IllegalArgumentException - 如果在找到的 ResourceBundle找不到指定的资源。
        IllegalArgumentException - 如果从 ResourceBundle检索的对象不是 String
      • reset

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

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

      • dispose

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

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

        超类中此方法的默认实现不执行任何操作。 子类实现应确保释放所有资源,尤其是本机资源。