模块 java.desktop

类 ImageWriter

java.lang.Object
javax.imageio.ImageWriter
所有已实现的接口:
ImageTranscoder

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

ImageWriter 对象通常由特定格式的服务提供者类实例化。服务提供者类在 IIORegistry 中注册,它使用它们进行格式识别和可用格式读取器和写入器的呈现。

参见:
  • 字段详细信息

    • originatingProvider

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

      protected Object  output
      ImageOutputStream 或其他 ObjectsetOutput 设置并由 getOutput 检索。默认情况下,它被初始化为 null
    • availableLocales

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

      protected Locale  locale
      当前用于本地化的 Locale,如果未设置则为 null。默认情况下,它被初始化为 null
    • warningListeners

      protected List <IIOWriteWarningListener > warningListeners
      当前注册的 IIOWriteWarningListenerList,默认初始化为 null,与空的 List 同义。
    • warningLocales

      protected List <Locale > warningLocales
      LocaleList,一个对应 warningListeners 的每个元素,默认初始化为 null,与空的 List 同义。
    • progressListeners

      protected List <IIOWriteProgressListener > progressListeners
      当前注册的 IIOWriteProgressListenerList,默认初始化为 null,与空的 List 同义。
  • 构造方法详细信息

    • ImageWriter

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

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

      参数:
      originatingProvider - 正在构造此对象的 ImageWriterSpinull
  • 方法详情

    • getOriginatingProvider

      public ImageWriterSpi  getOriginatingProvider()
      返回创建此 ImageWriterImageWriterSpi 对象,如果此对象不是通过 IIORegistry 创建的,则返回 null

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

      返回:
      一个 ImageWriterSpinull
      参见:
    • setOutput

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

      如果 output 是一个 ImageOutputStream ,调用 writewriteToSequenceprepareWriteEmpty /endWriteEmpty 方法将保留流的现有内容。其他写入方法,例如 writeInsertreplaceStreamMetadatareplaceImageMetadatareplacePixelsprepareInsertEmpty /endInsertEmptyendWriteSequence ,要求流的全部内容是可读和可写的,并且可能改变流的任何部分。

      使用 Object 而不是 ImageOutputStream 是为了直接与输出设备或成像协议交互的编写器。合法类集由作者的服务提供商的getOutputTypes方法公布;大多数作者将返回一个仅包含 ImageOutputStream.class 的单元素数组,以表明他们只接受一个 ImageOutputStream

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

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

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

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

      返回:
      使用 setOutputnull 指定的 Object
      参见:
    • getAvailableLocales

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

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

      返回:
      可以用作 setLocalenull 的参数的 Locale 数组。
    • setLocale

      public void setLocale(Locale  locale)
      将此 ImageWriter 的当前 Locale 设置为给定值。 null 的值会删除任何先前的设置,并指示编写器应该在其认为合适的情况下进行本地化。

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

      参数:
      locale - 所需的 Localenull
      抛出:
      IllegalArgumentException - 如果 locale 是非 null 但不是 getAvailableLocales 返回的值之一。
      参见:
    • getLocale

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

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

      返回:
      当前的 Localenull
      参见:
    • getDefaultWriteParam

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

      默认实现构造并返回一个新的 ImageWriteParam 对象,该对象不允许平铺、渐进编码或压缩,并且将为当前 Locale (IE,您将通过调用 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 对象。
    • getNumThumbnailsSupported

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

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

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

      默认实现返回 0。

      参数:
      imageType - 一个 ImageTypeSpecifier 指示要写入的图像类型,或 null
      param - 将用于写入的 ImageWriteParamnull
      streamMetadata - 将用于写入的 IIOMetadata 对象,或 null
      imageMetadata - 将用于写入的 IIOMetadata 对象,或 null
      返回:
      给定提供的参数可以写入的缩略图的数量,或者 -1 如果没有足够的信息可用。
    • getPreferredThumbnailSizes

      public Dimension [] getPreferredThumbnailSizes(ImageTypeSpecifier  imageType, ImageWriteParam  param, IIOMetadata  streamMetadata, IIOMetadata  imageMetadata)
      返回一个 Dimension 数组,指示缩略图的合法大小范围,因为它们将在输出文件或流中进行编码。此信息仅供参考;作者将根据需要调整任何提供的缩略图的大小。

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

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

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

      默认实现返回 null

      参数:
      imageType - 一个 ImageTypeSpecifier 指示要写入的图像类型,或 null
      param - 将用于写入的 ImageWriteParamnull
      streamMetadata - 将用于写入的 IIOMetadata 对象,或 null
      imageMetadata - 将用于写入的 IIOMetadata 对象,或 null
      返回:
      一个 Dimension 的数组,其长度至少为两个,或 null
    • canWriteRasters

      public boolean canWriteRasters()
      如果采用 IIOImage 参数的方法能够处理 Raster(与 RenderedImage 相对)源图像,则返回 true。如果此方法返回 false,那么如果提供了包含 RasterIIOImage,则这些方法将抛出 UnsupportedOperationException

      默认实现返回 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 - 一个 ImageWriteParam,或 null 使用默认的 ImageWriteParam
      抛出:
      IllegalStateException - 如果尚未设置输出。
      UnsupportedOperationException - 如果 image 包含一个 Raster 并且 canWriteRasters 返回 false
      IllegalArgumentException - 如果 imagenull
      IOException - 如果在写入过程中发生错误。
    • write

      public void write(IIOImage  image) throws IOException
      将包含具有默认元数据和缩略图的单个图像的完整图像流附加到输出。此方法是 write(null, image, null) 的简写。
      参数:
      image - 一个 IIOImage 对象,包含要写入的图像、缩略图和元数据。
      抛出:
      IllegalStateException - 如果尚未设置输出。
      IllegalArgumentException - 如果 imagenull
      UnsupportedOperationException - 如果 image 包含一个 Raster 并且 canWriteRasters 返回 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

      如果 canWriteSequence 返回 falsewriteToSequenceendWriteSequence 将抛出一个 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 包含一个 Raster 并且 canWriteRasters 返回 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

      如果输出为 null,则默认实现抛出 IllegalStateException,否则返回 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
      如果可以用索引 imageIndex 替换与现有图像关联的图像元数据,则返回 true 。如果此方法返回 false,则调用 replaceImageMetadata(imageIndex) 将抛出 UnsupportedOperationException

      不支持任何图像元数据替换的编写器可能会在不对索引执行边界检查的情况下返回 false

      如果输出为 null,则默认实现抛出 IllegalStateException,否则返回 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 的值可用于表示比当前最大索引大 1 的索引。

      不支持任何图像插入的编写器可能会在不对索引执行边界检查的情况下返回 false

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

      参数:
      imageIndex - 要插入图像的索引。
      返回:
      true 是否可以在给定索引处插入图像。
      抛出:
      IllegalStateException - 如果尚未设置输出。
      IndexOutOfBoundsException - 如果 writer 通常支持图像插入,但 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 包含本作者不支持的可选设置值(例如渐进式编码或任何特定于格式的设置),它们将被忽略。

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

      参数:
      imageIndex - 写入图像的索引。
      image - 一个 IIOImage 对象,包含要写入的图像、缩略图和元数据。
      param - 一个 ImageWriteParam,或 null 使用默认的 ImageWriteParam
      抛出:
      IllegalStateException - 如果尚未设置输出。
      UnsupportedOperationException - 如果 canInsertImage(imageIndex) 返回 false
      IllegalArgumentException - 如果 imagenull
      IndexOutOfBoundsException - 如果 imageIndex 小于 -1 或大于最大可用索引。
      UnsupportedOperationException - 如果 image 包含一个 Raster 并且 canWriteRasters 返回 false
      IOException - 如果在写入过程中发生错误。
    • canRemoveImage

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

      不支持任何图像删除的编写器可能会在不对索引执行边界检查的情况下返回 false

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

      参数:
      imageIndex - 要删除的图像的索引。
      返回:
      true 是否可以删除给定的图像。
      抛出:
      IllegalStateException - 如果尚未设置输出。
      IndexOutOfBoundsException - 如果 writer 通常支持图像删除,但 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 ,则其在当前搜索位置之前的现有内容不受影响,并且不需要可读或可写。

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

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

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

      抛出:
      IllegalStateException - 如果尚未设置输出。
      UnsupportedOperationException - 如果 canWriteEmpty(imageIndex) 返回 false
      IllegalStateException - 如果之前未调用 prepareWriteEmpty 而未调用 endWriteEmpty
      IllegalStateException - 如果之前调用了 prepareInsertEmpty 而没有相应调用 endInsertEmpty
      IllegalStateException - 如果调用 prepareReiplacePixels 而没有匹配调用 endReplacePixels
      IOException - 如果在写入期间发生 I/O 错误。
    • canInsertEmpty

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

      不支持插入空图像的编写器可能会在不对索引执行边界检查的情况下返回 false

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

      参数:
      imageIndex - 要插入图像的索引。
      返回:
      true 如果可以在给定索引处插入空图像。
      抛出:
      IllegalStateException - 如果尚未设置输出。
      IndexOutOfBoundsException - 如果 writer 通常支持空图像插入,但 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 包含本作者不支持的可选设置值(例如渐进式编码或任何特定于格式的设置),它们将被忽略。

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

      参数:
      imageIndex - 写入图像的索引。
      imageType - 一个 ImageTypeSpecifier 描述图像的布局。
      width - 图像的宽度。
      height - 图像的高度。
      imageMetadata - 代表图像元数据的 IIOMetadata 对象,或 null
      thumbnails - 此图像的 ListBufferedImage 个缩略图,或 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 开始的新图像。

      如果输出为 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

      如果输出为 null,则默认实现抛出 IllegalStateException,否则返回 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 将被抛出。

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

      参数:
      imageIndex - 要替换其像素的图像的索引。
      region - 将用于裁剪未来像素区域的 Rectangle
      抛出:
      IllegalStateException - 如果尚未设置输出。
      UnsupportedOperationException - 如果 canReplacePixels(imageIndex) 返回 false
      IndexOutOfBoundsException - 如果 imageIndex 小于 0 或大于最大可用索引。
      IllegalStateException - 如果先前调用 prepareReplacePixels 而没有匹配调用 endReplacePixels (IE, 不允许嵌套)。
      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 - 一个 ImageWriteParam,或 null 使用默认的 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()
      如果自编写器实例化或调用 clearAbortRequest 以来已发出中止当前写入操作的请求,则返回 true
      返回:
      true 如果当前写操作应该被中止。
      参见:
    • clearAbortRequest

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

      public void addIIOWriteWarningListener(IIOWriteWarningListener  listener)
      IIOWriteWarningListener 添加到已注册的警告监听器列表中。如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。发送给给定监听器的消息将被本地化,如果可能的话,以匹配当前的 Locale 。如果未设置 Locale,警告消息可能会按照作者认为合适的方式进行本地化。
      参数:
      listener - 要注册的 IIOWriteWarningListener
      参见:
    • removeIIOWriteWarningListener

      public void removeIIOWriteWarningListener(IIOWriteWarningListener  listener)
      从已注册的警告监听器列表中删除 IIOWriteWarningListener。如果监听器之前未注册,或者如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。
      参数:
      listener - 要注销的 IIOWriteWarningListener
      参见:
    • removeAllIIOWriteWarningListeners

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

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

    • addIIOWriteProgressListener

      public void addIIOWriteProgressListener(IIOWriteProgressListener  listener)
      IIOWriteProgressListener 添加到已注册进度监听器列表中。如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。
      参数:
      listener - 要注册的 IIOWriteProgressListener
      参见:
    • removeIIOWriteProgressListener

      public void removeIIOWriteProgressListener(IIOWriteProgressListener  listener)
      从已注册进度监听器列表中删除 IIOWriteProgressListener。如果监听器之前未注册,或者如果 listenernull ,则不会抛出任何异常,也不会采取任何操作。
      参数:
      listener - 要注销的 IIOWriteProgressListener
      参见:
    • 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)
      通过使用从 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 时,调用此方法很重要。否则,作者可能会无限期地继续持有资源。

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