- 直接已知的子类:
-
BMPImageWriteParam
,JPEGImageWriteParam
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 Summary
Modifier and TypeFieldDescriptionprotected boolean
一个boolean
,如果此ImageWriteParam
允许设置平铺网格偏移参数,则为true
。protected boolean
一个boolean
,如果此写入器可以使用压缩写入图像,则为true
。protected boolean
一个boolean
,如果此ImageWriteParam
允许将图像作为逐渐增加质量的序列写入,则为true
。protected boolean
一个boolean
,如果此ImageWriteParam
允许设置平铺宽度和平铺高度参数,则为true
。protected int
控制压缩设置的模式,必须设置为四个MODE_*
值之一。protected float
包含当前压缩质量设置的float
。protected String
包含当前压缩类型的名称的String
,如果未设置,则为null
。protected String[]
包含可用压缩类型的名称的String
数组。protected Locale
用于本地化压缩类型名称和质量描述的Locale
,如果使用默认Locale
,则为null
。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
如果已指定平铺参数,则为true
。Fields declared in class javax.imageio.IIOParam
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
-
Constructor Summary
ModifierConstructorDescriptionprotected
构造一个空的ImageWriteParam
。ImageWriteParam
(Locale locale) 构造一个设置为使用给定Locale
的ImageWriteParam
。 -
Method Summary
Modifier and TypeMethodDescriptionboolean
如果写入器在写入时可以执行带有非零网格偏移的平铺,则返回true
。boolean
如果此写入器支持压缩,则返回true
。boolean
如果写入器可以以逐渐增加质量的一系列扫描写出图像,则返回true
。boolean
如果写入器在写入时可以执行平铺,则返回true
。float
getBitRate
(float quality) 返回一个float
,指示在给定质量级别时每个输入图像数据位的输出数据位数的估计。int
返回当前的压缩模式,如果支持压缩。float
返回当前的压缩质量设置。String[]
返回一个String
数组,可与getCompressionQualityValues
一起用作设置或显示压缩质量级别的用户界面的一部分。float[]
返回一个float
数组,可与getCompressionQualityDescriptions
一起用作设置或显示压缩质量级别的用户界面的一部分。返回当前设置的压缩类型,如果未设置,则返回null
。String[]
返回可用压缩类型的列表,作为String
数组,如果不能使用这些接口选择压缩类型,则返回null
。返回当前设置的Locale
,如果仅支持默认Locale
,则返回null
。使用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
指定的任何先前的平铺网格参数。Methods declared in class javax.imageio.IIOParam
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
-
Field Details
-
MODE_DISABLED
public static final int MODE_DISABLED可传递给setTilingMode
、setProgressiveMode
和setCompressionMode
等方法的常量值,以便为将来的写入禁用该功能。也就是说,当设置此模式时,流将不会被平铺、渐进或压缩,并且相关的访问方法将抛出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一个boolean
,如果此ImageWriteParam
允许设置瓦片宽度和瓦片高度参数,则为true
。默认情况下,该值为false
。子类必须手动设置该值。不支持写入瓦片的子类应确保将此值设置为
false
。 -
tilingMode
protected int tilingMode控制分块设置的模式,必须设置为四个MODE_*
值之一。默认值为MODE_COPY_FROM_METADATA
。不支持写入瓦片的子类可以忽略此值。
- 参见:
-
preferredTileSizes
一组首选瓦片大小范围对。默认值为null
,表示没有首选大小。如果值为非null
,则必须至少有两个偶数长度。不支持写入瓦片的子类可以忽略此值。
- 参见:
-
tilingSet
protected boolean tilingSet一个boolean
,如果已指定瓦片参数,则为true
。不支持写入瓦片的子类可以忽略此值。
-
tileWidth
protected int tileWidth如果已设置分块,则为每个瓦片的宽度,否则为0。不支持分块的子类可以忽略此值。
-
tileHeight
protected int tileHeight如果已设置分块,则为每个瓦片的高度,否则为0。初始值为0
。不支持分块的子类可以忽略此值。
-
canOffsetTiles
protected boolean canOffsetTiles一个boolean
,如果此ImageWriteParam
允许设置瓦片网格偏移参数,则为true
。默认情况下,该值为false
。子类必须手动设置该值。不支持写入瓦片,或者支持写入但不支持偏移瓦片的子类必须确保将此值设置为
false
。 -
tileGridXOffset
protected int tileGridXOffset如果已设置分块,则瓦片网格原点应水平偏移的量,否则为0。初始值为0
。不支持偏移瓦片的子类可以忽略此值。
-
tileGridYOffset
protected int tileGridYOffset如果已设置分块,则瓦片网格原点应垂直偏移的量,否则为0。初始值为0
。不支持偏移瓦片的子类可以忽略此值。
-
canWriteProgressive
protected boolean canWriteProgressive一个boolean
,如果此ImageWriteParam
允许将图像作为逐渐增加质量通道的渐进序列进行写入,则为true
。默认情况下,该值为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
,如果要使用默认Locale
,则为null
。子类必须手动设置该值。
-
-
Constructor Details
-
ImageWriteParam
protected ImageWriteParam()构造一个空的ImageWriteParam
。由子类负责正确设置实例变量。 -
ImageWriteParam
构造一个设置为使用给定Locale
的ImageWriteParam
。- 参数:
-
locale
- 用于本地化压缩类型名称和质量描述的Locale
,或null
。
-
-
Method Details
-
getLocale
返回当前设置的Locale
,如果仅支持默认Locale
,则返回null
。- 返回:
-
当前
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_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
数组,如果不能使用这些接口选择压缩类型,则返回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
。类型作为getCompressionTypes
返回的值之一返回为String
。如果未设置任何压缩类型,则返回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
不为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
返回的数组长度大一。例如,字符串"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
。- 返回:
-
一个包含由
getCompressionQualityDescriptions
中的String
描述的压缩质量级别之间边界的float
数组。 - 抛出:
-
UnsupportedOperationException
- 如果写入器不支持压缩。 -
IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。 -
IllegalStateException
- 如果合法的压缩类型集合非null
且当前压缩类型是null
。 - 参见:
-