ImageWriter
的实例提供说明性“操作方法”信息。
特定图像格式的插件可以定义此类的子类,并从其 ImageWriter
实现的 getDefaultWriteParam
方法返回该类的对象。例如,内置的 JPEG 编写器插件将返回 javax.imageio.plugins.jpeg.JPEGImageWriteParam
的实例。
要写入的图像区域首先通过将图像的实际边界与 IIOParam.setSourceRegion
指定的矩形(如果有)相交来确定。如果生成的矩形的宽度或高度为零,编写器将抛出一个 IIOException
。如果交集不为空,则写入将从第一个子采样像素开始,并根据 IIOParam.setSourceSubsampling
指定的水平和垂直子采样因子在相交边界内包括其他像素。
平铺、渐进式编码和压缩等个别功能可以设置为四种模式之一。 MODE_DISABLED
禁用这些功能; MODE_DEFAULT
启用具有编写器控制的参数值的功能; MODE_EXPLICIT
启用该功能并允许使用 set
方法来提供额外的参数;和 MODE_COPY_FROM_METADATA
从传递给编写器的流和图像元数据对象中复制相关参数值。所有功能的默认值为 MODE_COPY_FROM_METADATA
。鼓励子类中提供的非标准功能,但不要求使用类似的方案。
插件编写者可以通过提供实现额外的插件特定接口的子类来扩展 ImageWriteParam
的功能。由插件来记录哪些接口可用以及如何使用它们。编写者将默默地忽略他们不知道的ImageWriteParam
子类的任何扩展功能。此外,他们可能会忽略在通过 getDefaultWriteParam
创建自己的 ImageWriteParam
实例时通常禁用的任何可选功能。
请注意,除非存在针对功能的查询方法,否则所有ImageWriter
实现都必须支持它(例如渐进式编码是可选的,但必须支持子采样)。
- 参见:
-
字段摘要
字段修饰符和类型Field描述protected boolean
如果此ImageWriteParam
允许设置平铺网格偏移参数,则boolean
即true
。protected boolean
一个boolean
就是true
如果这个作家可以使用压缩来写图像。protected boolean
boolean
即true
如果此ImageWriteParam
允许将图像写入为递增质量通道的渐进序列。protected boolean
如果此ImageWriteParam
允许设置拼贴宽度和拼贴高度参数,则boolean
即true
。protected int
控制压缩设置的模式,必须设置为四个MODE_*
值之一。protected float
包含当前压缩质量设置的float
。protected String
包含当前压缩类型名称的String
,如果未设置则为null
。protected String[]
包含可用压缩类型名称的String
数组。protected Locale
Locale
用于本地化压缩类型名称和质量描述,或null
使用默认Locale
。static final int
一个常量值,可以传递给setTilingMode
、setProgressiveMode
或setCompressionMode
等方法,以便为将来的写入启用该功能。static final int
一个常量值,可以传递给setTilingMode
、setProgressiveMode
和setCompressionMode
等方法,以便为将来的写入启用该功能。static final int
一个常量值,可以传递给setTilingMode
、setProgressiveMode
和setCompressionMode
等方法以禁用未来写入的功能。static final int
一个常量值,可以传递给setTilingMode
或setCompressionMode
等方法以启用未来写入的功能。protected Dimension[]
首选图块大小范围对的数组。protected int
控制渐进式编码的模式,必须设置为四个MODE_*
值之一,MODE_EXPLICIT
除外。protected int
如果已设置平铺,则平铺网格原点应从图像原点水平偏移的量,否则为 0。protected int
如果已设置平铺,则平铺网格原点应从图像原点垂直偏移的量,否则为 0。protected int
如果已设置平铺,则每个平铺的高度,否则为 0。protected int
如果已设置平铺,则每个平铺的宽度,否则为 0。protected int
控制平铺设置的模式,必须设置为四个MODE_*
值之一。protected boolean
如果指定了平铺参数,则为boolean
true
。在类 javax.imageio.IIOParam 中声明的字段
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
-
构造方法总结
构造方法修饰符构造方法描述protected
构造一个空的ImageWriteParam
。ImageWriteParam
(Locale locale) 构造一个ImageWriteParam
集以使用给定的Locale
。 -
方法总结
修饰符和类型方法描述boolean
如果编写器可以在写入时使用非零网格偏移执行平铺,则返回true
。boolean
如果此编写器支持压缩,则返回true
。boolean
如果作者可以将图像写成一系列质量逐渐提高的通道,则返回true
。boolean
如果编写器可以在写入时执行平铺,则返回true
。float
getBitRate
(float quality) 返回一个float
指示在给定质量级别下输入图像数据的每一位的输出数据位数的估计值。int
如果支持压缩,则返回当前压缩模式。float
返回当前的压缩质量设置。String[]
返回一个String
数组,可以与getCompressionQualityValues
一起用作用户接口的一部分,用于设置或显示压缩质量级别。float[]
返回一个float
数组,可以与getCompressionQualityDescriptions
一起用作用户接口的一部分,用于设置或显示压缩质量级别。返回当前设置的压缩类型,如果没有设置则返回null
。String[]
返回可用压缩类型的列表,作为数组或String
s,或者null
如果不能使用这些接口选择压缩类型。返回当前设置的Locale
或null
(如果仅支持默认的Locale
)。使用getLocale
返回的Locale
返回当前压缩类型名称的本地化版本。返回一个Dimension
数组,指示图块的合法大小范围,因为它们将在输出文件或流中进行编码。int
返回以渐进方式写入流的当前模式。int
返回图像的水平平铺网格偏移量,因为它将被写入输出流。int
返回图像的垂直平铺网格偏移量,因为它将被写入输出流。int
返回图像中每个图块的高度,因为它将被写入输出流。int
返回图像中每个图块的宽度,因为它将被写入输出流。int
如果支持平铺,则返回当前平铺模式。boolean
如果当前压缩类型提供无损压缩,则返回true
。void
setCompressionMode
(int mode) 指定是否要执行压缩,如果是,则如何确定压缩参数。void
setCompressionQuality
(float quality) 将压缩质量设置为0
和1
之间的值。void
setCompressionType
(String compressionType) 将压缩类型设置为getCompressionTypes
指示的值之一。void
setProgressiveMode
(int mode) 指定编写器以渐进模式写出图像,以便流将包含一系列质量不断提高的扫描。void
setTiling
(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset) 指定图像应在输出流中平铺。void
setTilingMode
(int mode) 确定图像是否将在输出流中平铺,如果是,将如何确定平铺参数。void
删除任何以前的压缩类型和质量设置。void
删除调用setTiling
指定的任何先前的图块网格参数。在类 javax.imageio.IIOParam 中声明的方法
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
-
字段详细信息
-
MODE_DISABLED
public static final int MODE_DISABLED一个常量值,可以传递给setTilingMode
、setProgressiveMode
和setCompressionMode
等方法以禁用未来写入的功能。也就是说,设置此模式后,流将not平铺、渐进或压缩,相关的访问器方法将抛出IllegalStateException
。- 参见:
-
MODE_DEFAULT
public static final int MODE_DEFAULT一个常量值,可以传递给setTilingMode
、setProgressiveMode
和setCompressionMode
等方法,以便为将来的写入启用该功能。也就是说,当启用此模式时,流将根据编写器以插件相关方式在内部选择的合理默认值进行平铺、渐进或压缩,并且相关的访问器方法将抛出IllegalStateException
。- 参见:
-
MODE_EXPLICIT
public static final int MODE_EXPLICIT一个常量值,可以传递给setTilingMode
或setCompressionMode
等方法以启用未来写入的功能。也就是说,当设置此模式时,将根据提供给此类中相应set
方法并可从相应get
方法检索的附加信息对流进行平铺或压缩。请注意,渐进式输出不支持此模式。- 参见:
-
MODE_COPY_FROM_METADATA
public static final int MODE_COPY_FROM_METADATA一个常量值,可以传递给setTilingMode
、setProgressiveMode
或setCompressionMode
等方法,以便为将来的写入启用该功能。也就是说,启用此模式后,将根据传递到写入操作的流和/或图像元数据的内容对流进行平铺、渐进或压缩,并且任何相关的访问器方法都将抛出IllegalStateException
。这是所有功能的默认模式,因此包含元数据的读取和随后包含元数据的写入将保留尽可能多的信息。
- 参见:
-
canWriteTiles
protected boolean canWriteTiles如果此ImageWriteParam
允许设置拼贴宽度和拼贴高度参数,则boolean
即true
。默认情况下,值为false
。子类必须手动设置值。不支持写入瓦片的子类应确保将此值设置为
false
。 -
tilingMode
protected int tilingMode控制平铺设置的模式,必须设置为四个MODE_*
值之一。默认值为MODE_COPY_FROM_METADATA
。不写瓦片的子类可以忽略这个值。
- 参见:
-
preferredTileSizes
首选图块大小范围对的数组。默认值为null
,表示没有首选尺寸。如果值为非null
,则它的长度必须至少为偶数 2。不支持写瓦片的子类可以忽略这个值。
- 参见:
-
tilingSet
protected boolean tilingSet如果指定了平铺参数,则为boolean
true
。不支持写瓦片的子类可以忽略这个值。
-
tileWidth
protected int tileWidth如果已设置平铺,则每个平铺的宽度,否则为 0。不支持平铺的子类可以忽略这个值。
-
tileHeight
protected int tileHeight如果已设置平铺,则每个平铺的高度,否则为 0。初始值为0
。不支持平铺的子类可以忽略这个值。
-
canOffsetTiles
protected boolean canOffsetTiles如果此ImageWriteParam
允许设置平铺网格偏移参数,则boolean
即true
。默认情况下,值为false
。子类必须手动设置值。不支持写入瓦片或支持写入但不支持偏移瓦片的子类必须确保将此值设置为
false
。 -
tileGridXOffset
protected int tileGridXOffset如果已设置平铺,则平铺网格原点应从图像原点水平偏移的量,否则为 0。初始值为0
。不支持偏移图块的子类可能会忽略此值。
-
tileGridYOffset
protected int tileGridYOffset如果已设置平铺,则平铺网格原点应从图像原点垂直偏移的量,否则为 0。初始值为0
。不支持偏移图块的子类可能会忽略此值。
-
canWriteProgressive
protected boolean canWriteProgressiveboolean
即true
如果此ImageWriteParam
允许将图像写入为递增质量通道的渐进序列。默认情况下,值为false
。子类必须手动设置值。不支持渐进式编码的子类必须确保此值设置为
false
。 -
progressiveMode
protected int progressiveMode控制渐进式编码的模式,必须设置为四个MODE_*
值之一,MODE_EXPLICIT
除外。默认值为MODE_COPY_FROM_METADATA
。不支持渐进式编码的子类可以忽略这个值。
- 参见:
-
canWriteCompressed
protected boolean canWriteCompressed一个boolean
就是true
如果这个作家可以使用压缩来写图像。默认情况下,值为false
。子类必须手动设置值。不支持压缩的子类必须确保将此值设置为
false
。 -
compressionMode
protected int compressionMode控制压缩设置的模式,必须设置为四个MODE_*
值之一。默认值为MODE_COPY_FROM_METADATA
。不支持压缩的子类可以忽略这个值。
- 参见:
-
compressionTypes
包含可用压缩类型名称的String
数组。子类必须手动设置值。不支持压缩的子类可以忽略这个值。
-
compressionType
包含当前压缩类型名称的String
,如果未设置则为null
。不支持压缩的子类可以忽略这个值。
-
compressionQuality
protected float compressionQuality包含当前压缩质量设置的float
。初始值为1.0F
。不支持压缩的子类可以忽略这个值。
-
locale
Locale
用于本地化压缩类型名称和质量描述,或null
使用默认Locale
。子类必须手动设置值。
-
-
构造方法详细信息
-
ImageWriteParam
protected ImageWriteParam()构造一个空的ImageWriteParam
。由子类正确设置实例变量。 -
ImageWriteParam
构造一个ImageWriteParam
集以使用给定的Locale
。- 参数:
locale
- 用于本地化压缩类型名称和质量描述的Locale
,或null
。
-
-
方法详情
-
getLocale
返回当前设置的Locale
或null
(如果仅支持默认的Locale
)。- 返回:
-
当前的
Locale
或null
。
-
canWriteTiles
public boolean canWriteTiles()如果编写器可以在写入时执行平铺,则返回true
。如果此方法返回false
,则setTiling
将抛出UnsupportedOperationException
。- 返回:
true
如果编写器支持平铺。- 参见:
-
canOffsetTiles
public boolean canOffsetTiles()如果编写器可以在写入时使用非零网格偏移执行平铺,则返回true
。如果此方法返回false
,那么setTiling
将抛出UnsupportedOperationException
如果网格偏移量参数不均为零。如果canWriteTiles
返回false
,此方法也将返回false
。- 返回:
true
如果编写器支持非零平铺偏移。- 参见:
-
setTilingMode
public void setTilingMode(int mode) 确定图像是否将在输出流中平铺,如果是,将如何确定平铺参数。这些模式解释如下:MODE_DISABLED
- 图像不会平铺。setTiling
会抛出一个IllegalStateException
。MODE_DEFAULT
- 图像将使用默认参数平铺。setTiling
会抛出一个IllegalStateException
。MODE_EXPLICIT
- 图像将根据setTiling
方法中给出的参数进行平铺。任何先前设置的平铺参数都将被丢弃。MODE_COPY_FROM_METADATA
- 图像将符合传入写入的元数据对象。setTiling
会抛出一个IllegalStateException
。
- 参数:
mode
- 用于平铺的模式。- 抛出:
UnsupportedOperationException
- 如果canWriteTiles
返回false
。IllegalArgumentException
- 如果mode
不是上面列出的模式之一。- 参见:
-
getTilingMode
public int getTilingMode()如果支持平铺,则返回当前平铺模式。否则抛出一个UnsupportedOperationException
。- 返回:
- 当前平铺模式。
- 抛出:
UnsupportedOperationException
- 如果canWriteTiles
返回false
。- 参见:
-
getPreferredTileSizes
返回一个Dimension
数组,指示图块的合法大小范围,因为它们将在输出文件或流中进行编码。返回的数组是一个副本。信息以成对的形式返回;一对中的第一个元素包含(含)最小宽度和高度,第二个元素包含(含)最大宽度和高度。每对一起定义了一个有效的尺寸范围。要指定固定大小,请为两个元素使用相同的宽度和高度。要指定任意范围,使用
null
的值代替实际的Dimension
数组。如果在构造函数中未指定数组,但允许平铺,则此方法返回
null
。- 返回:
-
一个
Dimension
的数组,其长度至少为两个,或null
。 - 抛出:
UnsupportedOperationException
- 如果插件不支持平铺。
-
setTiling
public void setTiling(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset) 指定图像应在输出流中平铺。tileWidth
和tileHeight
参数指定文件中图块的宽度和高度。如果平铺宽度或高度大于图像的宽度或高度,则图像不会在该维度上平铺。如果
canOffsetTiles
返回false
,则tileGridXOffset
和tileGridYOffset
参数必须为零。- 参数:
tileWidth
- 每个图块的宽度。tileHeight
- 每个图块的高度。tileGridXOffset
- 瓷砖网格的水平偏移。tileGridYOffset
- 瓷砖网格的垂直偏移。- 抛出:
UnsupportedOperationException
- 如果插件不支持平铺。IllegalStateException
- 如果平铺模式不是MODE_EXPLICIT
。UnsupportedOperationException
- 如果插件不支持网格偏移,并且网格偏移不都为零。IllegalArgumentException
- 如果图块大小不在getPreferredTileSizes
返回的允许范围之一内。IllegalArgumentException
- 如果tileWidth
或tileHeight
小于或等于 0。- 参见:
-
unsetTiling
public void unsetTiling()删除调用setTiling
指定的任何先前的图块网格参数。默认实现将实例变量
tileWidth
、tileHeight
、tileGridXOffset
和tileGridYOffset
设置为0
。- 抛出:
UnsupportedOperationException
- 如果插件不支持平铺。IllegalStateException
- 如果平铺模式不是MODE_EXPLICIT
。- 参见:
-
getTileWidth
public int getTileWidth()返回图像中每个图块的宽度,因为它将被写入输出流。如果未设置平铺参数,则会抛出IllegalStateException
。- 返回:
- 用于编码的图块宽度。
- 抛出:
UnsupportedOperationException
- 如果插件不支持平铺。IllegalStateException
- 如果平铺模式不是MODE_EXPLICIT
。IllegalStateException
- 如果尚未设置平铺参数。- 参见:
-
getTileHeight
public int getTileHeight()返回图像中每个图块的高度,因为它将被写入输出流。如果未设置平铺参数,则会抛出IllegalStateException
。- 返回:
- 用于编码的图块高度。
- 抛出:
UnsupportedOperationException
- 如果插件不支持平铺。IllegalStateException
- 如果平铺模式不是MODE_EXPLICIT
。IllegalStateException
- 如果尚未设置平铺参数。- 参见:
-
getTileGridXOffset
public int getTileGridXOffset()返回图像的水平平铺网格偏移量,因为它将被写入输出流。如果未设置平铺参数,则会抛出IllegalStateException
。- 返回:
- 用于编码的图块网格 X 偏移量。
- 抛出:
UnsupportedOperationException
- 如果插件不支持平铺。IllegalStateException
- 如果平铺模式不是MODE_EXPLICIT
。IllegalStateException
- 如果尚未设置平铺参数。- 参见:
-
getTileGridYOffset
public int getTileGridYOffset()返回图像的垂直平铺网格偏移量,因为它将被写入输出流。如果未设置平铺参数,则会抛出IllegalStateException
。- 返回:
- 用于编码的图块网格 Y 偏移量。
- 抛出:
UnsupportedOperationException
- 如果插件不支持平铺。IllegalStateException
- 如果平铺模式不是MODE_EXPLICIT
。IllegalStateException
- 如果尚未设置平铺参数。- 参见:
-
canWriteProgressive
public boolean canWriteProgressive()如果作者可以将图像写成一系列质量逐渐提高的通道,则返回true
。- 返回:
true
如果编写器支持渐进式编码。- 参见:
-
setProgressiveMode
public void setProgressiveMode(int mode) 指定编写器以渐进模式写出图像,以便流将包含一系列质量不断提高的扫描。如果不支持渐进式编码,将抛出UnsupportedOperationException
。mode 参数确定如何选择级数参数,并且必须是
MODE_DISABLED
、MODE_COPY_FROM_METADATA
或MODE_DEFAULT
之一。否则抛出IllegalArgumentException
。这些模式解释如下:
MODE_DISABLED
- 没有进展。使用它来关闭进度。MODE_COPY_FROM_METADATA
- 输出图像将使用在传递给编写器的元数据对象中找到的任何进展参数。MODE_DEFAULT
- 图像将逐步写入,使用作者选择的参数。
默认值为
MODE_COPY_FROM_METADATA
。- 参数:
mode
- 在输出流中设置进度的模式。- 抛出:
UnsupportedOperationException
- 如果编写器不支持渐进式编码。IllegalArgumentException
- 如果mode
不是上面列出的模式之一。- 参见:
-
getProgressiveMode
public int getProgressiveMode()返回以渐进方式写入流的当前模式。- 返回:
- 渐进式编码的当前模式。
- 抛出:
UnsupportedOperationException
- 如果编写器不支持渐进式编码。- 参见:
-
canWriteCompressed
public boolean canWriteCompressed()如果此编写器支持压缩,则返回true
。- 返回:
true
如果作者支持压缩。
-
setCompressionMode
public void setCompressionMode(int mode) 指定是否要执行压缩,如果是,则如何确定压缩参数。mode
参数必须是四种模式之一,解释如下:MODE_DISABLED
- 如果模式设置为MODE_DISABLED
,查询或修改压缩类型或参数的方法将抛出IllegalStateException
(如果插件通常支持压缩)。一些编写器(例如 JPEG)通常不提供未压缩的输出。在这种情况下,尝试将模式设置为MODE_DISABLED
将抛出UnsupportedOperationException
并且模式不会更改。MODE_EXPLICIT
- 使用此ImageWriteParam
中指定的压缩类型和质量设置进行压缩。任何先前设置的压缩参数都将被丢弃。MODE_COPY_FROM_METADATA
- 使用传递给编写器的元数据对象中指定的任何压缩参数。MODE_DEFAULT
- 使用默认压缩参数。
默认值为
MODE_COPY_FROM_METADATA
。- 参数:
mode
- 在输出流中设置压缩的模式。- 抛出:
UnsupportedOperationException
- 如果编写器不支持压缩,或者不支持请求的模式。IllegalArgumentException
- 如果mode
不是上面列出的模式之一。- 参见:
-
getCompressionMode
public int getCompressionMode()如果支持压缩,则返回当前压缩模式。- 返回:
- 当前的压缩模式。
- 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。- 参见:
-
getCompressionTypes
返回可用压缩类型的列表,作为数组或String
s,或者null
如果不能使用这些接口选择压缩类型。返回的数组是一个副本。如果作者只提供单一的、强制的压缩形式,则没有必要提供任何命名的压缩类型。仅当用户能够在不同方案之间做出有意义的选择时,才应使用命名的压缩类型。
默认实现检查是否支持压缩,如果不支持则抛出
UnsupportedOperationException
。否则,它返回compressionTypes
实例变量的克隆(如果它不是null
),否则返回null
。- 返回:
-
包含可用压缩类型的(非本地化)名称的
String
数组,或null
。 - 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。
-
setCompressionType
将压缩类型设置为getCompressionTypes
指示的值之一。如果传入值null
,则会删除任何先前的设置。默认实现检查是否支持压缩,压缩模式为
MODE_EXPLICIT
。如果是,它调用getCompressionTypes
并检查compressionType
是否为合法值之一。如果是,则设置compressionType
实例变量。如果compressionType
是null
,则在不执行任何检查的情况下设置实例变量。- 参数:
compressionType
-getCompressionTypes
返回的String
之一,或null
以删除任何先前的设置。- 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。UnsupportedOperationException
- 如果没有可设置的压缩类型。IllegalArgumentException
- 如果compressionType
是非null
但不是getCompressionTypes
返回的值之一。- 参见:
-
getCompressionType
返回当前设置的压缩类型,如果没有设置则返回null
。该类型作为String
从getCompressionTypes
返回的类型中返回。如果未设置压缩类型,则返回null
。默认实现检查是否支持压缩,压缩模式为
MODE_EXPLICIT
。如果是,它返回compressionType
实例变量的值。- 返回:
-
当前压缩类型为
String
,如果未设置类型则为null
。 - 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。- 参见:
-
unsetCompression
public void unsetCompression()删除任何以前的压缩类型和质量设置。默认实现将实例变量
compressionType
设置为null
,并将实例变量compressionQuality
设置为1.0F
。- 抛出:
UnsupportedOperationException
- 如果插件不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。- 参见:
-
getLocalizedCompressionTypeName
使用getLocale
返回的Locale
返回当前压缩类型名称的本地化版本。默认实现检查是否支持压缩,压缩模式为
MODE_EXPLICIT
。如果是这样,如果compressionType
是non-null
,则为方便起见返回getCompressionType
的值。- 返回:
String
包含当前压缩类型名称的本地化版本。- 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。IllegalStateException
- 如果未设置压缩类型。
-
isCompressionLossless
public boolean isCompressionLossless()如果当前压缩类型提供无损压缩,则返回true
。如果插件仅提供一种强制压缩类型,则可以调用此方法而无需先调用setCompressionType
。如果有多种压缩类型但尚未设置,则会抛出
IllegalStateException
。默认实现检查是否支持压缩,压缩模式为
MODE_EXPLICIT
。如果是这样,如果getCompressionTypes()
是null
或getCompressionType()
是非null
true
为方便起见返回。- 返回:
true
如果当前压缩类型是无损的。- 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。IllegalStateException
- 如果合法压缩类型集是非null
并且当前压缩类型是null
。
-
setCompressionQuality
public void setCompressionQuality(float quality) 将压缩质量设置为0
和1
之间的值。默认只支持单一的压缩质量设置;作者可以提供ImageWriteParam
的扩展版本,提供更多控制。对于有损压缩方案,压缩质量应该控制文件大小和图像质量之间的权衡(例如,通过在写入 JPEG 图像时选择量化表)。对于无损方案,压缩质量可用于控制文件大小和执行压缩所需时间之间的权衡(例如,通过优化行过滤器和在写入 PNG 图像时设置 ZLIB 压缩级别)。0.0 的压缩质量设置通常被解释为“高压缩很重要”,而 1.0 的设置通常被解释为“高图像质量很重要”。
如果有多种压缩类型但尚未设置,则会抛出
IllegalStateException
。默认实现检查是否支持压缩,以及压缩模式是否为
MODE_EXPLICIT
。如果是这样,如果getCompressionTypes()
返回null
或compressionType
是非null
它设置compressionQuality
实例变量。- 参数:
quality
-0
和1
之间的float
表示所需的质量级别。- 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。IllegalStateException
- 如果合法压缩类型集是非null
并且当前压缩类型是null
。IllegalArgumentException
- 如果quality
不在0
和1
之间,包括在内。- 参见:
-
getCompressionQuality
public float getCompressionQuality()返回当前的压缩质量设置。如果有多种压缩类型但尚未设置,则会抛出
IllegalStateException
。默认实现检查是否支持压缩以及压缩模式是否为
MODE_EXPLICIT
。如果是这样,如果getCompressionTypes()
是null
或getCompressionType()
是非null
,它返回compressionQuality
实例变量的值。- 返回:
- 当前的压缩质量设置。
- 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。IllegalStateException
- 如果合法压缩类型集是非null
并且当前压缩类型是null
。- 参见:
-
getBitRate
public float getBitRate(float quality) 返回一个float
指示在给定质量级别下输入图像数据的每一位的输出数据位数的估计值。该值通常位于0
和1
之间,值越小表示压缩越多。-1.0F
的特殊值用于指示没有可用的估计值。如果有多种压缩类型但尚未设置,则会抛出
IllegalStateException
。默认实现检查是否支持压缩并且压缩模式为
MODE_EXPLICIT
。如果是这样,如果getCompressionTypes()
是null
或getCompressionType()
是非null
,并且quality
在范围内,它返回-1.0
。- 参数:
quality
- 要查询其比特率的质量设置。- 返回:
-
压缩比特率的估计值,如果没有可用估计值,则为
-1.0F
。 - 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。IllegalStateException
- 如果合法压缩类型集是非null
并且当前压缩类型是null
。IllegalArgumentException
- 如果quality
不在0
和1
之间,包括在内。
-
getCompressionQualityDescriptions
返回一个String
数组,可以与getCompressionQualityValues
一起用作用户界面的一部分,用于设置或显示压缩质量级别。带有索引i
的String
描述了getCompressionQualityValues[i]
和getCompressionQualityValues[i + 1]
之间的质量水平范围。请注意,从getCompressionQualityValues
返回的数组长度始终比从getCompressionQualityDescriptions
返回的数组长度大 1。例如,字符串“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
不是null
,则描述应该本地化。如果有多种压缩类型但尚未设置,则会抛出
IllegalStateException
。默认实现检查是否支持压缩以及压缩模式是否为
MODE_EXPLICIT
。如果是这样,如果getCompressionTypes()
是null
或getCompressionType()
是非null
,它返回null
。- 返回:
-
包含压缩质量级别本地化描述的
String
数组。 - 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。IllegalStateException
- 如果合法压缩类型集是非null
并且当前压缩类型是null
。- 参见:
-
getCompressionQualityValues
public float[] getCompressionQualityValues()返回一个float
数组,可以与getCompressionQualityDescriptions
一起用作用户界面的一部分,用于设置或显示压缩质量级别。有关详细信息,请参阅getCompressionQualityDescriptions
。如果没有可用的描述,则返回
null
。如果从getCompressionQualityDescriptions
返回null
,则此方法也必须返回null
。如果有多种压缩类型但尚未设置,则会抛出
IllegalStateException
。默认实现检查是否支持压缩以及压缩模式是否为
MODE_EXPLICIT
。如果是这样,如果getCompressionTypes()
是null
或getCompressionType()
是非null
,它返回null
。- 返回:
float
的数组,指示压缩质量级别之间的边界,如getCompressionQualityDescriptions
中的String
所述。- 抛出:
UnsupportedOperationException
- 如果作者不支持压缩。IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。IllegalStateException
- 如果合法压缩类型集是非null
并且当前压缩类型是null
。- 参见:
-