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 booleanboolean即true如果此ImageWriteParam允许将图像写入为递增质量通道的渐进序列。protected boolean如果此ImageWriteParam允许设置拼贴宽度和拼贴高度参数,则boolean即true。protected int控制压缩设置的模式,必须设置为四个MODE_*值之一。protected float包含当前压缩质量设置的float。protected String包含当前压缩类型名称的String,如果未设置则为null。protected String[]包含可用压缩类型名称的String数组。protected LocaleLocale用于本地化压缩类型名称和质量描述,或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如果指定了平铺参数,则为booleantrue。在类 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。floatgetBitRate(float quality) 返回一个float指示在给定质量级别下输入图像数据的每一位的输出数据位数的估计值。int如果支持压缩,则返回当前压缩模式。float返回当前的压缩质量设置。String[]返回一个String数组,可以与getCompressionQualityValues一起用作用户接口的一部分,用于设置或显示压缩质量级别。float[]返回一个float数组,可以与getCompressionQualityDescriptions一起用作用户接口的一部分,用于设置或显示压缩质量级别。返回当前设置的压缩类型,如果没有设置则返回null。String[]返回可用压缩类型的列表,作为数组或Strings,或者null如果不能使用这些接口选择压缩类型。返回当前设置的Locale或null(如果仅支持默认的Locale)。使用getLocale返回的Locale返回当前压缩类型名称的本地化版本。返回一个Dimension数组,指示图块的合法大小范围,因为它们将在输出文件或流中进行编码。int返回以渐进方式写入流的当前模式。int返回图像的水平平铺网格偏移量,因为它将被写入输出流。int返回图像的垂直平铺网格偏移量,因为它将被写入输出流。int返回图像中每个图块的高度,因为它将被写入输出流。int返回图像中每个图块的宽度,因为它将被写入输出流。int如果支持平铺,则返回当前平铺模式。boolean如果当前压缩类型提供无损压缩,则返回true。voidsetCompressionMode(int mode) 指定是否要执行压缩,如果是,则如何确定压缩参数。voidsetCompressionQuality(float quality) 将压缩质量设置为0和1之间的值。voidsetCompressionType(String compressionType) 将压缩类型设置为getCompressionTypes指示的值之一。voidsetProgressiveMode(int mode) 指定编写器以渐进模式写出图像,以便流将包含一系列质量不断提高的扫描。voidsetTiling(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset) 指定图像应在输出流中平铺。voidsetTilingMode(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如果指定了平铺参数,则为booleantrue。不支持写瓦片的子类可以忽略这个值。
-
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
返回可用压缩类型的列表,作为数组或Strings,或者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()是非nulltrue为方便起见返回。- 返回:
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。- 参见:
-