javax.imageio

接口
异常
java.lang.Object
  继承者 javax.imageio.IIOParam
      继承者 javax.imageio.ImageWriteParam
直接已知子类:
BMPImageWriteParam, JPEGImageWriteParam

public class ImageWriteParam
     
extends IIOParam

描述如何对流进行编码的类。此类的实例或其子类用于提供 ImageWriter 实例的规定“入门”信息。

用于特定图像格式的插件可以定义此类的一个子类,并从其 ImageWriter 实现的 getDefaultWriteParam 方法返回该类的对象。例如,内置 JPEG writer 插件将返回 javax.imageio.plugins.jpeg.JPEGImageWriteParam 的实例。

要写入的图像区域通过第一次将图像的实际边界与 IIOParam.setSourceRegion 指定的矩形(如果有)的相交来确定。如果所得矩形的宽度或高度为零,则该 writer 将抛出 IIOException。如果相交区域为非空,则写入操作将从第一个二次取样的像素开始,并根据 IIOParam.setSourceSubsampling 指定的水平和垂直二次取样因子包含相交边界内额外的像素。

个别特征(比如 tiling、逐步编码和压缩)可以用以下四种模式之一设置。MODE_DISABLED 禁用这些特征;MODE_DEFAULT 使用带有受控于 writer 的参数值启用这些特征;MODE_EXPLICIT 启用这些特定并允许使用 set 方法提供额外的参数;MODE_COPY_FROM_METADATA 则从流以及传递给 writer 的图像元数据对象中复制相关的参数值。所有特征的默认模式是 MODE_COPY_FROM_METADATA。鼓励使用子类中提供的非标准特征,但不要求使用类似的方案。

插件 writer 可以通过提供实现额外的、特定于插件的接口来扩展 ImageWriteParam 的功能。由插件负责记录哪些接口可用以及如何使用。writer 将安静地忽略所有其未知的 ImageWriteParam 子类扩展功能。此外,将忽略通常在通过 getDefaultWriteParam 创建自己的 ImageWriteParam 实例时禁用的所有可选功能。

注意,如果不存在针对某一功能的查询方法,所有 ImageWriter 实现就必须都支持该功能(例如,逐步编码是可选的,但二次取样必须受支持)。

另请参见:
ImageReadParam

字段摘要
protected  boolean canOffsetTiles
          如果此 ImageWriteParam 允许使用 tiling 网格偏移量参数,则返回为 trueboolean 值。
protected  boolean canWriteCompressed
          如果此 writer 可以使用压缩写入图像,则返回为 trueboolean 值。
protected  boolean canWriteProgressive
          如果此 ImageWriteParam 允许以一个质量递增传递的逐步序列的方式写入图像,则返回为 trueboolean 值。
protected  boolean canWriteTiles
          如果此 ImageWriteParam 允许设置 tile 的宽度和高度参数,则返回为 trueboolean 值。
protected  int compressionMode
          控制压缩设置的模式,必须将它设置为四个 MODE_* 值之一。
protected  float compressionQuality
          包含当前压缩质量设置的 float 值。
protected  String compressionType
          包含当前压缩类型名称的 String,如果没有设置压缩类型,则返回 null
protected  String[] compressionTypes
          包含可用压缩类型名称的 String 数组。
protected  Locale locale
          用于本地化压缩类型名称和质量描述的 Localenull 表示使用默认 Locale
static int MODE_COPY_FROM_METADATA
          一个常量值,可以传入诸如 setTilingModesetProgressiveModesetCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。
static int MODE_DEFAULT
          一个常量值,可以传入诸如 setTilingModesetProgressiveModesetCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。
static int MODE_DISABLED
          一个常量值,可以传入诸如 setTilingModesetProgressiveModesetCompressionMode 之类的方法中,以禁用用于以后的写入操作的某个特征。
static int MODE_EXPLICIT
          一个常量值,可以传入诸如 setTilingModesetCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。
protected  Dimension[] preferredTileSizes
          首选 tile 大小范围对组成的数组。
protected  int progressiveMode
          控制逐步编码的模式,必须将它设置为除 MODE_EXPLICIT 以外的四个 MODE_* 值之一。
protected  int tileGridXOffset
          如果已经设置 tiling,则返回 tile 网格原点应该从图像原点水平偏移的量。
protected  int tileGridYOffset
          如果已经设置 tiling,则返回 tile 网格原点应该从图像原点垂直偏移的量。
protected  int tileHeight
          如果已经设置 tiling,则返回每个 tile 的高度,否则返回 0。
protected  int tileWidth
          如果已经设置 tiling,则返回每个 tile 的宽度,否则返回 0。
protected  int tilingMode
          控制 tiling 设置的模式,必须将它设置为以下四个 MODE_* 值之一。
protected  boolean tilingSet
          如果已经指定 tiling 参数,则返回一个为 trueboolean 值。
 
从类 javax.imageio.IIOParam 继承的字段
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
 
构造方法摘要
protected ImageWriteParam()
          构造一个空的 ImageWriteParam
  ImageWriteParam(Locale locale)
          构造一个 ImageWriteParam 集,以使用给定 Locale
 
方法摘要
 boolean canOffsetTiles()
          如果 writer 在执行写入操作的同时可以使用非零网格偏移量进行平铺,则返回 true
 boolean canWriteCompressed()
          如果此 writer 支持压缩,则返回 true
 boolean canWriteProgressive()
          如果 writer 能够以一系列质量逐渐递增的传递的方式将图像写出,则返回 true
 boolean canWriteTiles()
          如果 writer 在执行写入操作的同时可以进行平铺,则返回 true
 float getBitRate(float quality)
          返回一个 float 值,该值指示对给定质量级别上用于输入图像数据的每个位的输出数据位数的估计。
 int getCompressionMode()
          如果支持压缩,则返回当前压缩模式。
 float getCompressionQuality()
          返回当前压缩质量设置。
 String[] getCompressionQualityDescriptions()
          返回一个 String 数组,可作为用户界面的一部分与 getCompressionQualityValues 一起使用,以设置或显示压缩质量级别。
 float[] getCompressionQualityValues()
          返回一个 float 数组,可作为用户界面的一部分与 getCompressionQualityDescriptions 一起使用,以设置或显示压缩质量级别。
 String getCompressionType()
          返回当前设置的压缩类型,如果没有设置任何压缩类型,则返回 null
 String[] getCompressionTypes()
          以数组或 String 形式返回可用压缩类型的列表,如果不能使用这些接口选择压缩类型,则返回 null
 Locale getLocale()
          返回当前设置的 Locale,如果仅支持默认 Locale,则返回 null
 String getLocalizedCompressionTypeName()
          返回当前压缩类型的本地化名称,使用 getLocale 返回的 Locale
 Dimension[] getPreferredTileSizes()
          返回一个 Dimension 数组,指示在输出文件或流中进行编码时 tile 的合法大小范围。
 int getProgressiveMode()
          返回以逐步方式将数据写入流的当前模式。
 int getTileGridXOffset()
          返回图像的水平 tile 网格偏移量,将根据该偏移量对输出流进行写入。
 int getTileGridYOffset()
          返回图像的垂直 tile 网格偏移量,将根据该偏移量对输出流进行写入。
 int getTileHeight()
          返回图像中每个 tile 的高度,将根据该高度对输出流进行写入。
 int getTileWidth()
          返回图像中每个 tile 的宽度,将根据该宽度对输出流进行写入。
 int getTilingMode()
          如果支持平铺,则返回当前平铺模式。
 boolean isCompressionLossless()
          如果当前压缩类型提供无损失的压缩,则返回 true
 void setCompressionMode(int mode)
          指定是否执行压缩,如果执行压缩,将如何确定 compression 参数。
 void setCompressionQuality(float quality)
          将压缩质量设置为 01 之间的某个值。
 void setCompressionType(String compressionType)
          将压缩类型设置为 getCompressionTypes 指示的值之一。
 void setProgressiveMode(int mode)
          指定 writer 使用逐步模式写出图像,从而输出流将包含一系列质量递增的扫描。
 void setTiling(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset)
          指定应该在输出流中平铺图像。
 void setTilingMode(int mode)
          确定图像在输出流中是否将被平铺,如果将被平铺,将如何确定 tiling 参数。
 void unsetCompression()
          移除所有以前的压缩类型和质量设置。
 void unsetTiling()
          移除通过调用 setTiling 指定的所有以前的 tile 网格参数。
 
从类 javax.imageio.IIOParam 继承的方法
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

MODE_DISABLED

public static final int MODE_DISABLED
一个常量值,可以传入诸如 setTilingModesetProgressiveModesetCompressionMode 之类的方法中,以禁用用于以后的写入操作的某个特征。也就是说,在设置此模式时,该流将 被平铺、逐步编码或压缩,相关的访问器方法将抛出 IllegalStateException

另请参见:
MODE_EXPLICIT, MODE_COPY_FROM_METADATA, MODE_DEFAULT, setProgressiveMode(int), getProgressiveMode(), setTilingMode(int), getTilingMode(), setCompressionMode(int), getCompressionMode(), 常量字段值

MODE_DEFAULT

public static final int MODE_DEFAULT
一个常量值,可以传入诸如 setTilingModesetProgressiveModesetCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。也就是说,在启用此模式时,将根据 writer 以与插件有关的方式内部选择的明智默认值来平铺、逐步编码和压缩该流,相关的访问器方法将抛出 IllegalStateException

另请参见:
MODE_DISABLED, MODE_EXPLICIT, MODE_COPY_FROM_METADATA, setProgressiveMode(int), getProgressiveMode(), setTilingMode(int), getTilingMode(), setCompressionMode(int), getCompressionMode(), 常量字段值

MODE_EXPLICIT

public static final int MODE_EXPLICIT
一个常量值,可以传入诸如 setTilingModesetCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。也就是说,在设置此模式时,将根据为此类中的相应 set 方法提供的额外信息和可以从相应 get 方法中获取到的信息来平铺或压缩该流。注意,此模式不支持逐步输出。

另请参见:
MODE_DISABLED, MODE_COPY_FROM_METADATA, MODE_DEFAULT, setProgressiveMode(int), getProgressiveMode(), setTilingMode(int), getTilingMode(), setCompressionMode(int), getCompressionMode(), 常量字段值

MODE_COPY_FROM_METADATA

public static final int MODE_COPY_FROM_METADATA
一个常量值,可以传入诸如 setTilingModesetProgressiveModesetCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。也就是说,在启用此模式时,将根据传入写入操作的流内容和/或图像元数据来平铺、逐步编码和压缩该流,所有相关访问器方法都将抛出 IllegalStateException

这是所有特征的默认模式,因此,如果一个包括元数据的读取操作之后将进行包括元数据的写入操作,则读取操作将保留尽可能多的信息。

另请参见:
MODE_DISABLED, MODE_EXPLICIT, MODE_DEFAULT, setProgressiveMode(int), getProgressiveMode(), setTilingMode(int), getTilingMode(), setCompressionMode(int), getCompressionMode(), 常量字段值

canWriteTiles

protected boolean canWriteTiles
如果此 ImageWriteParam 允许设置 tile 的宽度和高度参数,则返回为 trueboolean 值。默认情况下,该值为 false。子类必须手工设置该值。

不支持写入 tile 的子类应该确保此值被设置为 false


tilingMode

protected int tilingMode
控制 tiling 设置的模式,必须将它设置为以下四个 MODE_* 值之一。默认值为 MODE_COPY_FROM_METADATA

不支持写入 tile 的子类可以忽略此值。

另请参见:
MODE_DISABLED, MODE_EXPLICIT, MODE_COPY_FROM_METADATA, MODE_DEFAULT, setTilingMode(int), getTilingMode()

preferredTileSizes

protected Dimension[] preferredTileSizes
首选 tile 大小范围对组成的数组。默认值为 null,指示没有首选大小。如果该值为非 null 值,则首选大小的平均长度必须至少为 2。

不支持写入 tile 的子类可以忽略此值。

另请参见:
getPreferredTileSizes()

tilingSet

protected boolean tilingSet
如果已经指定 tiling 参数,则返回一个为 trueboolean 值。

不支持写入 tile 的子类可以忽略此值。


tileWidth

protected int tileWidth
如果已经设置 tiling,则返回每个 tile 的宽度,否则返回 0。

不支持 tiling 的子类可以忽略此值。


tileHeight

protected int tileHeight
如果已经设置 tiling,则返回每个 tile 的高度,否则返回 0。初始值为 0

不支持 tiling 的子类可以忽略此值。


canOffsetTiles

protected boolean canOffsetTiles
如果此 ImageWriteParam 允许使用 tiling 网格偏移量参数,则返回为 trueboolean 值。默认情况下,该值为 false。子类必须手工设置该值。

不支持写入 tile 的子类或支持写入 tile 但不支持将 tile 偏移的子类必须确保此值被设置为 false


tileGridXOffset

protected int tileGridXOffset
如果已经设置 tiling,则返回 tile 网格原点应该从图像原点水平偏移的量。否则返回 0。初始值为 0

不支持将 tile 偏移的子类可以忽略此值。


tileGridYOffset

protected int tileGridYOffset
如果已经设置 tiling,则返回 tile 网格原点应该从图像原点垂直偏移的量。否则返回 0。初始值为 0

不支持将 tile 偏移的子类可以忽略此值。


canWriteProgressive

protected boolean canWriteProgressive
如果此 ImageWriteParam 允许以一个质量递增传递的逐步序列的方式写入图像,则返回为 trueboolean 值。默认情况下,该值为 false。子类必须手工设置该值。

不支持逐步编码的子类必须确保此值被设置为 false


progressiveMode

protected int progressiveMode
控制逐步编码的模式,必须将它设置为除 MODE_EXPLICIT 以外的四个 MODE_* 值之一。默认值为 MODE_COPY_FROM_METADATA

不支持逐步编码的子类可以忽略此值。

另请参见:
MODE_DISABLED, MODE_EXPLICIT, MODE_COPY_FROM_METADATA, MODE_DEFAULT, setProgressiveMode(int), getProgressiveMode()

canWriteCompressed

protected boolean canWriteCompressed
如果此 writer 可以使用压缩写入图像,则返回为 trueboolean 值。默认情况下,该值为 false。子类必须手工设置该值。

不支持压缩的子类必须确保此值被设置为 false


compressionMode

protected int compressionMode
控制压缩设置的模式,必须将它设置为四个 MODE_* 值之一。默认值为 MODE_COPY_FROM_METADATA

不支持压缩的子类可以忽略此值。

另请参见:
MODE_DISABLED, MODE_EXPLICIT, MODE_COPY_FROM_METADATA, MODE_DEFAULT, setCompressionMode(int), getCompressionMode()

compressionTypes

protected String[] compressionTypes
包含可用压缩类型名称的 String 数组。子类必须手工设置该值。

不支持压缩的子类可以忽略此值。


compressionType

protected String compressionType
包含当前压缩类型名称的 String,如果没有设置压缩类型,则返回 null

不支持压缩的子类可以忽略此值。


compressionQuality

protected float compressionQuality
包含当前压缩质量设置的 float 值。初始值为 1.0F

不支持压缩的子类可以忽略此值。


locale

protected Locale locale
用于本地化压缩类型名称和质量描述的 Localenull 表示使用默认 Locale。子类必须手工设置该值。

构造方法详细信息

ImageWriteParam

protected ImageWriteParam()
构造一个空的 ImageWriteParam。由子类负责恰当地设置实例变量。


ImageWriteParam

public ImageWriteParam(Locale locale)
构造一个 ImageWriteParam 集,以使用给定 Locale

参数:
locale - 将用于本地化压缩类型名称和质量描述的 Locale,或者为 null
方法详细信息

getLocale

public Locale getLocale()
返回当前设置的 Locale,如果仅支持默认 Locale,则返回 null

返回:
当前 Localenull

canWriteTiles

public boolean canWriteTiles()
如果 writer 在执行写入操作的同时可以进行平铺,则返回 true。如果此方法返回 false,则 setTiling 将抛出 UnsupportedOperationException

返回:
如果 writer 支持平铺,则返回 true
另请参见:
canOffsetTiles(), setTiling(int, int, int, int)

canOffsetTiles

public boolean canOffsetTiles()
如果 writer 在执行写入操作的同时可以使用非零网格偏移量进行平铺,则返回 true。如果此方法返回 false,则 setTiling 将抛出 UnsupportedOperationException,如果网格偏移量参数不同时为零的话。如果 canWriteTiles 返回 false,则此方法也将返回 false

返回:
如果 writer 支持非零 tile 偏移量,则返回 true
另请参见:
canWriteTiles(), setTiling(int, int, int, int)

setTilingMode

public void setTilingMode(int mode)
确定图像在输出流中是否将被平铺,如果将被平铺,将如何确定 tiling 参数。对这些模式的解释如下:
  • MODE_DISABLED - 图像不会被平铺,setTiling 将抛出 IllegalStateException
  • MODE_DEFAULT - 将使用默认参数平铺图像。setTiling 将抛出 IllegalStateException
  • MODE_EXPLICIT - 将根据 setTiling 方法中给定的参数平铺图像。任何以前设置的 tiling 参数都将被丢弃。
  • MODE_COPY_FROM_METADATA - 图像将与传入某一写入操作中的元数据对象一致。setTiling 将抛出 IllegalStateException

参数:
mode - 用于 tiling 的模式。
抛出:
UnsupportedOperationException - 如果 canWriteTiles 返回 false
IllegalArgumentException - 如果 mode 不是上面列出的模式之一。
另请参见:
setTiling(int, int, int, int), getTilingMode()

getTilingMode

public int getTilingMode()
如果支持平铺,则返回当前平铺模式。否则抛出 UnsupportedOperationException

返回:
当前平铺模式。
抛出:
UnsupportedOperationException - 如果 canWriteTiles 返回 false
另请参见:
setTilingMode(int)

getPreferredTileSizes

public Dimension[] getPreferredTileSizes()
返回一个 Dimension 数组,指示在输出文件或流中进行编码时 tile 的合法大小范围。返回的数组是一个副本。

信息以对集合的形式返回;对的第一个元素包含最小宽度和高度(包括在内),第二个元素包含最大宽度和高度(包括在内)。将其放到一起,每个对便定义了一个有效大小范围。要定义固定大小,则对两个元素使用相同的宽度和高度。要定义任意范围,则使用 null 值替代实际 Dimension 数组。

如果构造方法上没有指定数组,但允许进行平铺,则此方法返回 null

返回:
一个 Dimension 数组,其平均长度至少为 2;或者 null
抛出:
UnsupportedOperationException - 如果插件不支持平铺。

setTiling

public void setTiling(int tileWidth,
                      int tileHeight,
                      int tileGridXOffset,
                      int tileGridYOffset)
指定应该在输出流中平铺图像。 tileWidthtileHeight 参数指定文件中 tile 的宽度和高度。如果 tile 的宽度或高度大于图像的宽度或高度,则图像无法使用该维数平铺。

如果 canOffsetTiles 返回 false,则 tileGridXOffsettileGridYOffset 参数必须为零。

参数:
tileWidth - 每个 tile 的宽度。
tileHeight - 每个 tile 的高度。
tileGridXOffset - tile 网格的水平偏移量。
tileGridYOffset - tile 网格的垂直偏移量。
抛出:
UnsupportedOperationException - 如果插件不支持平铺。
IllegalStateException - 如果平铺模式不为 MODE_EXPLICIT
UnsupportedOperationException - 如果插件不支持网格偏移量,且网格偏移量并不都为零。
IllegalArgumentException - 如果 tile 大小不在 getPreferredTileSizes 返回的某个所允许范围内。
IllegalArgumentException - 如果 tileWidthtileHeight 小于等于 0。
另请参见:
canWriteTiles, canOffsetTiles, getTileWidth(), getTileHeight(), getTileGridXOffset(), getTileGridYOffset()

unsetTiling

public void unsetTiling()
移除通过调用 setTiling 指定的所有以前的 tile 网格参数。

默认实现将实例变量 tileWidthtileHeighttileGridXOffsettileGridYOffset 都设置为 0

抛出:
UnsupportedOperationException - 如果插件不支持平铺。

JDK 1.6 中文手册