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