JavaTM Platform
Standard Ed. 6

javax.imageio
类 ImageWriteParam

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 - 用于 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 - 如果插件不支持平铺。
IllegalStateException - 如果平铺模式不为 MODE_EXPLICIT
另请参见:
setTiling(int, int, int, int)

getTileWidth

public int getTileWidth()
返回图像中每个 tile 的宽度,将根据该宽度对输出流进行写入。如果没有设置 tiling 参数,则抛出 IllegalStateException

返回:
将用于编码的 tile 宽度。
抛出:
UnsupportedOperationException - 如果插件不支持平铺。
IllegalStateException - 如果平铺模式不为 MODE_EXPLICIT
IllegalStateException - 如果尚未设置 tiling 参数。
另请参见:
setTiling(int, int, int, int), getTileHeight()

getTileHeight

public int getTileHeight()
返回图像中每个 tile 的高度,将根据该高度对输出流进行写入。如果没有设置 tiling 参数,则抛出 IllegalStateException

返回:
将用于编码的 tile 高度。
抛出:
UnsupportedOperationException - 如果插件不支持平铺。
IllegalStateException - 如果平铺模式不为 MODE_EXPLICIT
IllegalStateException - 如果尚未设置 tiling 参数。
另请参见:
setTiling(int, int, int, int), getTileWidth()

getTileGridXOffset

public int getTileGridXOffset()
返回图像的水平 tile 网格偏移量,将根据该偏移量对输出流进行写入。如果没有设置 tiling 参数,则抛出 IllegalStateException

返回:
将用于编码的 tile 网格 X 偏移量。
抛出:
UnsupportedOperationException - 如果插件不支持平铺。
IllegalStateException - 如果平铺模式不为 MODE_EXPLICIT
IllegalStateException - 如果尚未设置 tiling 参数。
另请参见:
setTiling(int, int, int, int), getTileGridYOffset()

getTileGridYOffset

public int getTileGridYOffset()
返回图像的垂直 tile 网格偏移量,将根据该偏移量对输出流进行写入。如果没有设置 tiling 参数,则抛出 IllegalStateException

返回:
将用于编码的 tile 网格 Y 偏移量。
抛出:
UnsupportedOperationException - 如果插件不支持平铺。
IllegalStateException - 如果平铺模式不为 MODE_EXPLICIT
IllegalStateException - 如果尚未设置 tiling 参数。
另请参见:
setTiling(int, int, int, int), getTileGridXOffset()

canWriteProgressive

public boolean canWriteProgressive()
如果 writer 能够以一系列质量逐渐递增的传递的方式将图像写出,则返回 true

返回:
如果 writer 支持逐步编码,则返回 true
另请参见:
setProgressiveMode(int), getProgressiveMode()

setProgressiveMode

public void setProgressiveMode(int mode)
指定 writer 使用逐步模式写出图像,从而输出流将包含一系列质量递增的扫描。如果不支持逐步编码,则将抛出 UnsupportedOperationException

mode 参数确定如何选择 progression 参数,并且必须是 MODE_DISABLEDMODE_COPY_FROM_METADATAMODE_DEFAULT。否则抛出 IllegalArgumentException

对这些模式的解释如下:

默认值为 MODE_COPY_FROM_METADATA

参数:
mode - 用来在输出流中设置进度的模式。
抛出:
UnsupportedOperationException - 如果 writer 不支持逐步编码。
IllegalArgumentException - 如果 mode 不是上面列出的模式之一。
另请参见:
getProgressiveMode()

getProgressiveMode

public int getProgressiveMode()
返回以逐步方式将数据写入流的当前模式。

返回:
逐步编码的当前模式。
抛出:
UnsupportedOperationException - 如果 writer 不支持逐步编码。
另请参见:
setProgressiveMode(int)

canWriteCompressed

public boolean canWriteCompressed()
如果此 writer 支持压缩,则返回 true

返回:
如果 writer 支持压缩,则返回 true

setCompressionMode

public void setCompressionMode(int mode)
指定是否执行压缩,如果执行压缩,将如何确定 compression 参数。 mode 参数必须是四种模式之一,对它们的解释如下:

默认值为 MODE_COPY_FROM_METADATA

参数:
mode - 用来在输出流中设置压缩的模式。
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩,或者不支持所请求的模式。
IllegalArgumentException - 如果 mode 不是上面列出的模式之一。
另请参见:
getCompressionMode()

getCompressionMode

public int getCompressionMode()
如果支持压缩,则返回当前压缩模式。

返回:
当前压缩模式。
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
另请参见:
setCompressionMode(int)

getCompressionTypes

public String[] getCompressionTypes()
以数组或 String 形式返回可用压缩类型的列表,如果不能使用这些接口选择压缩类型,则返回 null。返回的数组是一个副本。

如果 writer 只提供某一强制形式的压缩,则没有必要提供所有指定的压缩类型。指定压缩类型只应该在用户能够在不同方案之间作出有意义选择的情况下使用。

默认实现检查是否支持压缩,如果不支持,则抛出 UnsupportedOperationException。否则,如果 compressionTypes 实例变量为非 null,则返回该变量的副本,否则返回 null

返回:
包含可用压缩类型的(非本地化)名称的 String 数组,或者返回 null
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。

setCompressionType

public void setCompressionType(String compressionType)
将压缩类型设置为 getCompressionTypes 指示的值之一。如果传入的是 null 值,则移除所有以前的设置。

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是,则调用 getCompressionTypes 并检查 compressionType 是否是合法值之一。如果是合法值,则设置 compressionType 实例变量。如果 compressionTypenull,则设置该实例变量而不执行任何检查。

参数:
compressionType - 由 getCompressionTypes 返回的 String 之一;或者为 null,表示移除所有以前的设置。
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
UnsupportedOperationException - 如果没有可设置的压缩类型。
IllegalArgumentException - 如果 compressionType 为非 null 但不是 getCompressionTypes 返回的值之一。
另请参见:
getCompressionTypes(), getCompressionType(), unsetCompression()

getCompressionType

public String getCompressionType()
返回当前设置的压缩类型,如果没有设置任何压缩类型,则返回 null。以 String 的形式返回该类型,它是 getCompressionTypes 返回的那些类型之一。如果没有设置压缩类型,则返回 null

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是这样,则返回 compressionType 实例变量的值。

返回:
String 形式的当前压缩类型,如果没有设置压缩类型,则返回 null
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
另请参见:
setCompressionType(java.lang.String)

unsetCompression

public void unsetCompression()
移除所有以前的压缩类型和质量设置。

默认实现将实例变量 compressionType 设置为 null,并将实例变量 compressionQuality 设置为 1.0F

抛出:
UnsupportedOperationException - 如果插件不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
另请参见:
setCompressionType(java.lang.String), setCompressionQuality(float)

getLocalizedCompressionTypeName

public String getLocalizedCompressionTypeName()
返回当前压缩类型的本地化名称,使用 getLocale 返回的 Locale

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是这样,或者 compressionType 为非 null,则作为一种便捷方式返回 getCompressionType 的值。

返回:
包含当前压缩类型的本地化名称的 String
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
IllegalStateException - 如果没有设置压缩类型。

isCompressionLossless

public boolean isCompressionLossless()
如果当前压缩类型提供无损失的压缩,则返回 true。如果插件只提供一个强制压缩类型,则可以在不先调用 setCompressionType 的情况下调用此方法。

如果有多个压缩类型,但没有设置任何一种压缩类型,则抛出 IllegalStateException

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是这样,而 getCompressionTypes()nullgetCompressionType() 为非 null,则作为一种便捷方式返回 true

返回:
如果当前压缩类型是无损失的,则返回 true
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
IllegalStateException - 如果合法压缩类型集为非 null 并且当前压缩类型为 null

setCompressionQuality

public void setCompressionQuality(float quality)
将压缩质量设置为 01 之间的某个值。默认情况下,只支持一种压缩质量设置;writer 可以提供扩展的 ImageWriteParam,其提供了更多控制。对于有损失的压缩方案,压缩质量应该控制文件大小与图像质量之间的权衡(例如,通过在写入 JPEG 图像时选择量化表)。对于无损失方案,可以使用压缩质量控制文件大小与执行压缩所用时间之间的权衡(例如,通过在写入 PNG 图像时优化行过滤器并设置 ZLIB 压缩级别)。

压缩质量为 0.0 通常被解释为“高度压缩很重要”,而该设置为 1.0 通常被解释为“高图像质量很重要”。

如果有多个压缩类型,但没有设置任何一种压缩类型,则抛出 IllegalStateException

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是这样,而 getCompressionTypes() 返回 nullcompressionType 为非 null,则设置 compressionQuality 实例变量。

参数:
quality - 指示所需质量级别的 01 之间的一个 float 值。
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
IllegalStateException - 如果合法压缩类型集为非 null 并且当前压缩类型为 null
IllegalArgumentException - 如果 quality 不在 01(包括两者)之间。
另请参见:
getCompressionQuality()

getCompressionQuality

public float getCompressionQuality()
返回当前压缩质量设置。

如果有多个压缩类型,但没有设置任何一种压缩类型,则抛出 IllegalStateException

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是这样,而 getCompressionTypes()nullgetCompressionType() 为非 null,则返回 compressionQuality 实例变量的值。

返回:
当前压缩质量设置。
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
IllegalStateException - 如果合法压缩类型集为非 null 并且当前压缩类型为 null
另请参见:
setCompressionQuality(float)

getBitRate

public float getBitRate(float quality)
返回一个 float 值,该值指示对给定质量级别上用于输入图像数据的每个位的输出数据位数的估计。该值通常位于 01 之间,值越小则压缩得越紧。特殊值 -1.0F 用于指示没有估计数可用。

如果有多个压缩类型,但没有设置任何一种压缩类型,则抛出 IllegalStateException

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是这样,而 getCompressionTypes()nullgetCompressionType() 为非 null,并且 quality 在适当范围内,则返回 -1.0

参数:
quality - 将查询其位率 (bit rate) 的查询设置。
返回:
压缩位率的估计数,如果没有估计数可用,则返回 -1.0F
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
IllegalStateException - 如果合法压缩类型集为非 null 并且当前压缩类型为 null
IllegalArgumentException - 如果 quality 不在 01(包括两者)之间。

getCompressionQualityDescriptions

public String[] getCompressionQualityDescriptions()
返回一个 String 数组,可作为用户界面的一部分与 getCompressionQualityValues 一起使用,以设置或显示压缩质量级别。索引为 iString 提供对质量级别范围的描述,该范围在 getCompressionQualityValues[i]getCompressionQualityValues[i + 1] 之间。注意,从 getCompressionQualityValues 返回的数组长度将总是大于从 getCompressionQualityDescriptions 返回的数组长度。

例如,字符串 "Good"、"Better" 和 "Best" 可以与范围 [0, .33)[.33, .66)[.66, 1.0] 关联。在这种情况下,getCompressionQualityDescriptions 将返回 { "Good", "Better", "Best" }getCompressionQualityValues 将返回 { 0.0F, .33F, .66F, 1.0F }

如果没有描述可用,则返回 null。如果从 getCompressionQualityValues 返回 null,则此方法也必须返回 null

应该为由 getLocale 返回的 Locale 将描述本地化,如果 Locale 为非 null 的话。

如果有多个压缩类型,但没有设置任何一种压缩类型,则抛出 IllegalStateException

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是这样,而 getCompressionTypes()nullgetCompressionType() 为非 null,则返回 null

返回:
包含压缩质量级别的本地化描述的 String 数组。
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
IllegalStateException - 如果合法压缩类型集为非 null 并且当前压缩类型为 null
另请参见:
getCompressionQualityValues()

getCompressionQualityValues

public float[] getCompressionQualityValues()
返回一个 float 数组,可作为用户界面的一部分与 getCompressionQualityDescriptions 一起使用,以设置或显示压缩质量级别。有关更多信息,请参阅 getCompressionQualityDescriptions

如果没有描述可用,则返回 null。如果从 getCompressionQualityDescriptions 返回 null,则此方法也必须返回 null

如果有多个压缩类型,但没有设置任何一种压缩类型,则抛出 IllegalStateException

默认实现检查是否支持压缩,以及压缩模式是否为 MODE_EXPLICIT。如果是这样,而 getCompressionTypes()nullgetCompressionType() 为非 null,则返回 null

返回:
一个 float 数组,指示 getCompressionQualityDescriptions 中的 String 描述的压缩质量级别之间的分界线。
抛出:
UnsupportedOperationException - 如果 writer 不支持压缩。
IllegalStateException - 如果压缩模式不是 MODE_EXPLICIT
IllegalStateException - 如果合法压缩类型集为非 null 并且当前压缩类型为 null
另请参见:
getCompressionQualityDescriptions()

JavaTM Platform
Standard Ed. 6

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策