java.lang.Object javax.imageio.IIOParam javax.imageio.ImageWriteParam
public class ImageWriteParam
描述如何对流进行编码的类。此类的实例或其子类用于提供 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 网格偏移量参数,则返回为 true 的 boolean 值。 |
protected boolean |
canWriteCompressed 如果此 writer 可以使用压缩写入图像,则返回为 true 的 boolean 值。 |
protected boolean |
canWriteProgressive 如果此 ImageWriteParam 允许以一个质量递增传递的逐步序列的方式写入图像,则返回为 true 的 boolean 值。 |
protected boolean |
canWriteTiles 如果此 ImageWriteParam 允许设置 tile 的宽度和高度参数,则返回为 true 的 boolean 值。 |
protected int |
compressionMode 控制压缩设置的模式,必须将它设置为四个 MODE_* 值之一。 |
protected float |
compressionQuality 包含当前压缩质量设置的 float 值。 |
protected String |
compressionType 包含当前压缩类型名称的 String ,如果没有设置压缩类型,则返回 null 。 |
protected String[] |
compressionTypes 包含可用压缩类型名称的 String 数组。 |
protected Locale |
locale 用于本地化压缩类型名称和质量描述的 Locale ,null 表示使用默认 Locale 。 |
static int |
MODE_COPY_FROM_METADATA 一个常量值,可以传入诸如 setTilingMode 、setProgressiveMode 或 setCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。 |
static int |
MODE_DEFAULT 一个常量值,可以传入诸如 setTilingMode 、setProgressiveMode 和 setCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。 |
static int |
MODE_DISABLED 一个常量值,可以传入诸如 setTilingMode 、setProgressiveMode 和 setCompressionMode 之类的方法中,以禁用用于以后的写入操作的某个特征。 |
static int |
MODE_EXPLICIT 一个常量值,可以传入诸如 setTilingMode 或 setCompressionMode 之类的方法中,以启用用于以后的写入操作的特征。 |
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 参数,则返回一个为 true 的 boolean 值。 |
从类 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) 将压缩质量设置为 0 和 1 之间的某个值。 |
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 网格参数。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
字段详细信息 |
---|
public static final int MODE_DISABLED
setTilingMode
、
setProgressiveMode
和
setCompressionMode
之类的方法中,以禁用用于以后的写入操作的某个特征。也就是说,在设置此模式时,该流将
不被平铺、逐步编码或压缩,相关的访问器方法将抛出
IllegalStateException
。
public static final int MODE_DEFAULT
setTilingMode
、
setProgressiveMode
和
setCompressionMode
之类的方法中,以启用用于以后的写入操作的特征。也就是说,在启用此模式时,将根据 writer 以与插件有关的方式内部选择的明智默认值来平铺、逐步编码和压缩该流,相关的访问器方法将抛出
IllegalStateException
。
public static final int MODE_EXPLICIT
setTilingMode
或
setCompressionMode
之类的方法中,以启用用于以后的写入操作的特征。也就是说,在设置此模式时,将根据为此类中的相应
set
方法提供的额外信息和可以从相应
get
方法中获取到的信息来平铺或压缩该流。注意,此模式不支持逐步输出。
public static final int MODE_COPY_FROM_METADATA
setTilingMode
、
setProgressiveMode
或
setCompressionMode
之类的方法中,以启用用于以后的写入操作的特征。也就是说,在启用此模式时,将根据传入写入操作的流内容和/或图像元数据来平铺、逐步编码和压缩该流,所有相关访问器方法都将抛出
IllegalStateException
。
这是所有特征的默认模式,因此,如果一个包括元数据的读取操作之后将进行包括元数据的写入操作,则读取操作将保留尽可能多的信息。
protected boolean canWriteTiles
ImageWriteParam
允许设置 tile 的宽度和高度参数,则返回为
true
的
boolean
值。默认情况下,该值为
false
。子类必须手工设置该值。
不支持写入 tile 的子类应该确保此值被设置为 false
。
protected int tilingMode
MODE_*
值之一。默认值为
MODE_COPY_FROM_METADATA
。
不支持写入 tile 的子类可以忽略此值。
protected Dimension[] preferredTileSizes
null
,指示没有首选大小。如果该值为非
null
值,则首选大小的平均长度必须至少为 2。
不支持写入 tile 的子类可以忽略此值。
getPreferredTileSizes()
protected boolean tilingSet
true
的
boolean
值。
不支持写入 tile 的子类可以忽略此值。
protected int tileWidth
不支持 tiling 的子类可以忽略此值。
protected int tileHeight
0
。
不支持 tiling 的子类可以忽略此值。
protected boolean canOffsetTiles
ImageWriteParam
允许使用 tiling 网格偏移量参数,则返回为
true
的
boolean
值。默认情况下,该值为
false
。子类必须手工设置该值。
不支持写入 tile 的子类或支持写入 tile 但不支持将 tile 偏移的子类必须确保此值被设置为 false
。
protected int tileGridXOffset
0
。
不支持将 tile 偏移的子类可以忽略此值。
protected int tileGridYOffset
0
。
不支持将 tile 偏移的子类可以忽略此值。
protected boolean canWriteProgressive
ImageWriteParam
允许以一个质量递增传递的逐步序列的方式写入图像,则返回为
true
的
boolean
值。默认情况下,该值为
false
。子类必须手工设置该值。
不支持逐步编码的子类必须确保此值被设置为 false
。
protected int progressiveMode
MODE_EXPLICIT
以外的四个
MODE_*
值之一。默认值为
MODE_COPY_FROM_METADATA
。
不支持逐步编码的子类可以忽略此值。
protected boolean canWriteCompressed
true
的
boolean
值。默认情况下,该值为
false
。子类必须手工设置该值。
不支持压缩的子类必须确保此值被设置为 false
。
protected int compressionMode
MODE_*
值之一。默认值为
MODE_COPY_FROM_METADATA
。
不支持压缩的子类可以忽略此值。
protected String[] compressionTypes
String
数组。子类必须手工设置该值。
不支持压缩的子类可以忽略此值。
protected String compressionType
String
,如果没有设置压缩类型,则返回
null
。
不支持压缩的子类可以忽略此值。
protected float compressionQuality
float
值。初始值为
1.0F
。
不支持压缩的子类可以忽略此值。
protected Locale locale
Locale
,
null
表示使用默认
Locale
。子类必须手工设置该值。
构造方法详细信息 |
---|
protected ImageWriteParam()
ImageWriteParam
。由子类负责恰当地设置实例变量。
public ImageWriteParam(Locale locale)
ImageWriteParam
集,以使用给定
Locale
。
locale
- 将用于本地化压缩类型名称和质量描述的
Locale
,或者为
null
。
方法详细信息 |
---|
public Locale getLocale()
Locale
,如果仅支持默认
Locale
,则返回
null
。
Locale
或
null
。
public boolean canWriteTiles()
true
。如果此方法返回
false
,则
setTiling
将抛出
UnsupportedOperationException
。
true
。
canOffsetTiles()
,
setTiling(int, int, int, int)
public boolean canOffsetTiles()
true
。如果此方法返回
false
,则
setTiling
将抛出
UnsupportedOperationException
,如果网格偏移量参数不同时为零的话。如果
canWriteTiles
返回
false
,则此方法也将返回
false
。
true
。
canWriteTiles()
,
setTiling(int, int, int, int)
public void setTilingMode(int mode)
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()
public int getTilingMode()
UnsupportedOperationException
。
UnsupportedOperationException
- 如果
canWriteTiles
返回
false
。
setTilingMode(int)
public Dimension[] getPreferredTileSizes()
Dimension
数组,指示在输出文件或流中进行编码时 tile 的合法大小范围。返回的数组是一个副本。
信息以对集合的形式返回;对的第一个元素包含最小宽度和高度(包括在内),第二个元素包含最大宽度和高度(包括在内)。将其放到一起,每个对便定义了一个有效大小范围。要定义固定大小,则对两个元素使用相同的宽度和高度。要定义任意范围,则使用 null
值替代实际 Dimension
数组。
如果构造方法上没有指定数组,但允许进行平铺,则此方法返回 null
。
Dimension
数组,其平均长度至少为 2;或者
null
。
UnsupportedOperationException
- 如果插件不支持平铺。
public void setTiling(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset)
tileWidth
和
tileHeight
参数指定文件中 tile 的宽度和高度。如果 tile 的宽度或高度大于图像的宽度或高度,则图像无法使用该维数平铺。
如果 canOffsetTiles
返回 false
,则 tileGridXOffset
和 tileGridYOffset
参数必须为零。
tileWidth
- 每个 tile 的宽度。
tileHeight
- 每个 tile 的高度。
tileGridXOffset
- tile 网格的水平偏移量。
tileGridYOffset
- tile 网格的垂直偏移量。
UnsupportedOperationException
- 如果插件不支持平铺。
IllegalStateException
- 如果平铺模式不为
MODE_EXPLICIT
。
UnsupportedOperationException
- 如果插件不支持网格偏移量,且网格偏移量并不都为零。
IllegalArgumentException
- 如果 tile 大小不在
getPreferredTileSizes
返回的某个所允许范围内。
IllegalArgumentException
- 如果
tileWidth
或
tileHeight
小于等于 0。
canWriteTiles
,
canOffsetTiles
,
getTileWidth()
,
getTileHeight()
,
getTileGridXOffset()
,
getTileGridYOffset()
public void unsetTiling()
setTiling
指定的所有以前的 tile 网格参数。
默认实现将实例变量 tileWidth
、tileHeight
、tileGridXOffset
和 tileGridYOffset
都设置为 0
。
UnsupportedOperationException
- 如果插件不支持平铺。