- 直接已知的子类:
-
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
FieldsModifier 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
ConstructorsModifierConstructorDescriptionprotected构造一个空的ImageWriteParam。ImageWriteParam(Locale locale) 构造一个设置为使用给定Locale的ImageWriteParam。 -
Method Summary
Modifier and TypeMethodDescriptionboolean如果写入器在写入时可以执行带有非零网格偏移的平铺,则返回true。boolean如果此写入器支持压缩,则返回true。boolean如果写入器可以以逐渐增加质量的一系列扫描写出图像,则返回true。boolean如果写入器在写入时可以执行平铺,则返回true。floatgetBitRate(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。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指定的任何先前的平铺网格参数。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。 - 参见:
-