Module java.desktop
Package javax.imageio

Class ImageWriteParam

java.lang.Object
javax.imageio.IIOParam
javax.imageio.ImageWriteParam
直接已知的子类:
BMPImageWriteParam, JPEGImageWriteParam

public class ImageWriteParam extends IIOParam
描述流如何被编码的类。此类或其子类的实例用于向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 Details

    • MODE_DISABLED

      public static final int MODE_DISABLED
      可传递给setTilingModesetProgressiveModesetCompressionMode等方法的常量值,以便为将来的写入禁用该功能。也就是说,当设置此模式时,流将不会被平铺、渐进或压缩,并且相关的访问方法将抛出IllegalStateException
      参见:
    • MODE_DEFAULT

      public static final int MODE_DEFAULT
      可以传递给诸如setTilingModesetProgressiveModesetCompressionMode等方法的常量值,以启用将来写入时的该功能。也就是说,当启用此模式时,流将根据插件内部选择的合理默认值进行分块、渐进或压缩,相关的访问方法将抛出IllegalStateException异常。
      参见:
    • MODE_EXPLICIT

      public static final int MODE_EXPLICIT
      可以传递给诸如setTilingModesetCompressionMode等方法的常量值,以启用将来写入时的某个功能。也就是说,当设置此模式时,流将根据提供给此类中相应的set方法的附加信息进行分块或压缩,并且可以从相应的get方法中检索到。请注意,此模式不支持渐进输出。
      参见:
    • MODE_COPY_FROM_METADATA

      public static final int MODE_COPY_FROM_METADATA
      可以传递给诸如setTilingModesetProgressiveModesetCompressionMode等方法的常量值,以启用将来写入时的该功能。也就是说,当启用此模式时,流将根据传递给写入操作的流和/或图像元数据的内容进行分块、渐进或压缩,并且任何相关的访问方法将抛出IllegalStateException异常。

      这是所有功能的默认模式,因此包括元数据的读取后跟包括元数据的写入将尽可能保留尽可能多的信息。

      参见:
    • canWriteTiles

      protected boolean canWriteTiles
      一个boolean,如果此ImageWriteParam允许设置瓦片宽度和瓦片高度参数,则为true。默认情况下,该值为false。子类必须手动设置该值。

      不支持写入瓦片的子类应确保将此值设置为false

    • tilingMode

      protected int tilingMode
      控制分块设置的模式,必须设置为四个MODE_*值之一。默认值为MODE_COPY_FROM_METADATA

      不支持写入瓦片的子类可以忽略此值。

      参见:
    • preferredTileSizes

      protected Dimension[] 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

      protected String[] compressionTypes
      一个包含可用压缩类型名称的String数组。子类必须手动设置该值。

      不支持压缩的子类可以忽略此值。

    • compressionType

      protected String compressionType
      一个包含当前压缩类型名称的String,如果未设置任何名称,则为null

      不支持压缩的子类可以忽略此值。

    • compressionQuality

      protected float compressionQuality
      一个包含当前压缩质量设置的float。初始值为1.0F

      不支持压缩的子类可以忽略此值。

    • locale

      protected Locale locale
      用于本地化压缩类型名称和质量描述的Locale,如果要使用默认Locale,则为null。子类必须手动设置该值。
  • Constructor Details

    • ImageWriteParam

      protected ImageWriteParam()
      构造一个空的ImageWriteParam。由子类负责正确设置实例变量。
    • ImageWriteParam

      public ImageWriteParam(Locale locale)
      构造一个设置为使用给定LocaleImageWriteParam
      参数:
      locale - 用于本地化压缩类型名称和质量描述的Locale,或null
  • Method Details

    • getLocale

      public Locale 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

      public Dimension[] getPreferredTileSizes()
      返回一个Dimension数组,指示在输出文件或流中编码时瓦片的合法大小范围。返回的数组是一个副本。

      信息以一组对的形式返回;一对的第一个元素包含一个(包含的)最小宽度和高度,第二个元素包含一个(包含的)最大宽度和高度。每对一起定义一个有效的大小范围。要指定固定大小,请在两个元素中使用相同的宽度和高度。要指定任意范围,使用null值代替Dimension的实际数组。

      如果构造函数未指定数组,但允许平铺,则此方法返回null

      返回:
      一个至少有两个偶数长度的Dimension数组,或null
      抛出:
      UnsupportedOperationException - 如果插件不支持平铺。
    • setTiling

      public void setTiling(int tileWidth, int tileHeight, int tileGridXOffset, int tileGridYOffset)
      指定图像应在输出流中进行平铺。tileWidthtileHeight参数指定文件中瓦片的宽度和高度。如果瓦片宽度或高度大于图像的宽度或高度,则在该维度上不对图像进行平铺。

      如果canOffsetTiles返回false,则tileGridXOffsettileGridYOffset参数必须为零。

      参数:
      tileWidth - 每个瓦片的宽度。
      tileHeight - 每个瓦片的高度。
      tileGridXOffset - 瓦片网格的水平偏移量。
      tileGridYOffset - 瓦片网格的垂直偏移量。
      抛出:
      UnsupportedOperationException - 如果插件不支持平铺。
      IllegalStateException - 如果平铺模式不是MODE_EXPLICIT
      UnsupportedOperationException - 如果插件不支持网格偏移,并且网格偏移不都为零。
      IllegalArgumentException - 如果瓦片大小不在getPreferredTileSizes返回的允许范围内。
      IllegalArgumentException - 如果tileWidthtileHeight小于或等于0。
      参见:
    • unsetTiling

      public void unsetTiling()
      移除通过调用setTiling指定的任何先前的瓦片网格参数。

      默认实现将实例变量tileWidthtileHeighttileGridXOffsettileGridYOffset设置为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_DISABLEDMODE_COPY_FROM_METADATAMODE_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

      public String[] getCompressionTypes()
      返回可用压缩类型的列表,作为String数组,如果不能使用这些接口选择压缩类型,则返回null。返回的数组是一个副本。

      如果编写器只提供单一的、强制的压缩形式,则不需要提供任何命名的压缩类型。命名的压缩类型应仅在用户能够在不同方案之间做出有意义的选择时使用。

      默认实现检查是否支持压缩,如果不支持,则抛出UnsupportedOperationException。否则,如果compressionTypes实例变量是非null的,则返回其克隆,否则返回null

      返回:
      包含可用压缩类型(非本地化)名称的String数组,或null
      抛出:
      UnsupportedOperationException - 如果编写器不支持压缩。
    • setCompressionType

      public void setCompressionType(String compressionType)
      将压缩类型设置为getCompressionTypes指示的值。如果传入null值,则删除任何先前的设置。

      默认实现检查是否支持压缩和压缩模式为MODE_EXPLICIT。如果是,则调用getCompressionTypes并检查compressionType是否是合法值。如果是,则设置compressionType实例变量。如果compressionTypenull,则设置实例变量而不执行任何检查。

      参数:
      compressionType - 由getCompressionTypes返回的String之一,或null以删除任何先前的设置。
      抛出:
      UnsupportedOperationException - 如果编写器不支持压缩。
      IllegalStateException - 如果压缩模式不是MODE_EXPLICIT
      UnsupportedOperationException - 如果没有可设置的压缩类型。
      IllegalArgumentException - 如果compressionTypenull但不是getCompressionTypes返回的值之一。
      参见:
    • getCompressionType

      public String 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

      public String getLocalizedCompressionTypeName()
      返回当前压缩类型的本地化版本名称,使用getLocale返回的Locale

      默认实现检查是否支持压缩以及压缩模式是否为MODE_EXPLICIT。如果是,则如果compressionType不为null,则作为便利返回getCompressionType的值。

      返回:
      包含当前压缩类型名称的本地化版本的String
      抛出:
      UnsupportedOperationException - 如果写入器不支持压缩。
      IllegalStateException - 如果压缩模式不是MODE_EXPLICIT
      IllegalStateException - 如果未设置压缩类型。
    • isCompressionLossless

      public boolean isCompressionLossless()
      如果当前压缩类型提供无损压缩,则返回true。如果插件只提供一个强制压缩类型,则可以在先调用setCompressionType的情况下调用此方法。

      如果存在多个压缩类型但未设置任何一个,则会抛出IllegalStateException

      默认实现检查是否支持压缩以及压缩模式是否为MODE_EXPLICIT。如果是,则如果getCompressionTypes()nullgetCompressionType()不为null,则作为便利返回true

      返回:
      如果当前压缩类型是无损的,则返回true
      抛出:
      UnsupportedOperationException - 如果写入器不支持压缩。
      IllegalStateException - 如果压缩模式不是MODE_EXPLICIT
      IllegalStateException - 如果合法压缩类型集合不为null且当前压缩类型为null
    • setCompressionQuality

      public void setCompressionQuality(float quality)
      将压缩质量设置为介于01之间的值。默认情况下仅支持单个压缩质量设置;写入器可以提供扩展版本的ImageWriteParam以提供更多控制。对于有损压缩方案,压缩质量应控制文件大小和图像质量之间的权衡(例如,在写入JPEG图像时选择量化表)。对于无损方案,压缩质量可用于控制文件大小和执行压缩所需时间之间的权衡(例如,在写入PNG图像时优化行滤波器并设置ZLIB压缩级别)。

      压缩质量设置为0.0通常被解释为“高压缩重要”,而设置为1.0通常被解释为“高图像质量重要”。

      如果存在多个压缩类型但未设置任何一个,则会抛出IllegalStateException

      默认实现检查是否支持压缩以及压缩模式是否为MODE_EXPLICIT。如果是,则如果getCompressionTypes()返回nullcompressionType不为null,则设置compressionQuality实例变量。

      参数:
      quality - 介于01之间的float,表示所需的质量级别。
      抛出:
      UnsupportedOperationException - 如果写入器不支持压缩。
      IllegalStateException - 如果压缩模式不是MODE_EXPLICIT
      IllegalStateException - 如果合法压缩类型集合不为null且当前压缩类型为null
      IllegalArgumentException - 如果quality不在01之间(包括边界)。
      参见:
    • getCompressionQuality

      public float getCompressionQuality()
      返回当前压缩质量设置。

      如果存在多个压缩类型但未设置任何一个,则会抛出IllegalStateException

      默认实现检查是否支持压缩以及压缩模式是否为MODE_EXPLICIT。如果是,则如果getCompressionTypes()nullgetCompressionType()不为null,则返回compressionQuality实例变量的值。

      返回:
      当前压缩质量设置。
      抛出:
      UnsupportedOperationException - 如果写入器不支持压缩。
      IllegalStateException - 如果压缩模式不是MODE_EXPLICIT
      IllegalStateException - 如果合法压缩类型集合不为null且当前压缩类型为null
      参见:
    • getBitRate

      public float getBitRate(float quality)
      返回一个float,表示在给定质量级别下每个输入图像数据位的输出数据位数的估计。该值通常介于01之间,较小的值表示更多的压缩。特殊值-1.0F用于表示没有可用的估计。

      如果存在多个压缩类型但未设置任何一个,则会抛出IllegalStateException

      默认实现检查是否支持压缩以及压缩模式是否为MODE_EXPLICIT。如果是,则如果getCompressionTypes()nullgetCompressionType()不为null,且quality在范围内,则返回-1.0

      参数:
      quality - 要查询其比特率的质量设置。
      返回:
      压缩比特率的估计,如果没有估计可用,则返回-1.0F
      抛出:
      UnsupportedOperationException - 如果写入器不支持压缩。
      IllegalStateException - 如果压缩模式不是MODE_EXPLICIT
      IllegalStateException - 如果合法压缩类型集合不为null且当前压缩类型为null
      IllegalArgumentException - 如果quality不在01之间(包括边界)。
    • getCompressionQualityDescriptions

      public String[] getCompressionQualityDescriptions()
      返回一个String数组,可与getCompressionQualityValues一起用作设置或显示压缩质量级别的用户界面的一部分。索引为iString提供了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()nullgetCompressionType()不为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()nullgetCompressionType()为非null,则返回null

      返回:
      一个包含由getCompressionQualityDescriptions中的String描述的压缩质量级别之间边界的float数组。
      抛出:
      UnsupportedOperationException - 如果写入器不支持压缩。
      IllegalStateException - 如果压缩模式不是MODE_EXPLICIT
      IllegalStateException - 如果合法的压缩类型集合非null且当前压缩类型是null
      参见: