public class JPEGImageWriteParam extends ImageWriteParam
ImageWriter
的getDefaultImageWriteParam
方法返回。
这些添加的主要目的是允许表的规范用于编码缩写的流。 内置的JPEG作者也将接受普通的ImageWriteParam
,在这种情况下,作者将在内部构建必要的表格。
在任一种情况下, ImageWriteParam
中的质量设置与底层库具有相同的含义:1.00表示全1的量化表,0.75表示“标准”,视觉无损量化表,0.00表示全部255的浓缩表。
虽然缩写流的表格通常首先编写仅包含表格的缩写流来指定,但在某些应用程序中,表格提前固定。 该类允许从客户端代码直接指定表。
通常,这些表在传递给写入程序的IIOMetadata
对象中指定,并且这些对象中包含的任何表都将写入流中。 如果在元数据中没有指定表,则会写入一个缩写的流。 如果没有表包括在元数据和没有表在指定的JPEGImageWriteParam
,则缩写流使用的“标准”视觉无损表编码。 当必须写入缩写流,而不首先向流中写入任何表时,必须使用此类来指定表。 为了使用这个类,传递给写入程序的元数据对象不能包含任何表,也不能提供流元数据。 有关默认表的更多信息,请参阅JPEGQTable
和JPEGHuffmanTable
。
默认JPEGImageWriteParam
由返回getDefaultWriteParam
作家的方法不包含表。 默认表包含在作者返回的默认IIOMetadata
对象中。
如果元数据包含表,则忽略JPEGImageWriteParam
中给出的表。 此外,一旦写入了一组表,只有元数据中的表可以覆盖它们以用于后续写入,无论是相同的流还是不同的。 为了使用这个类指定新的表,必须调用写入器的reset
方法。
有关内置JPEG插件的操作的更多信息,请参阅JPEG metadata format specification and usage notes 。
canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, compressionMode, compressionQuality, compressionType, compressionTypes, locale, MODE_COPY_FROM_METADATA, MODE_DEFAULT, MODE_DISABLED, MODE_EXPLICIT, preferredTileSizes, progressiveMode, tileGridXOffset, tileGridYOffset, tileHeight, tileWidth, tilingMode, tilingSet
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
Constructor and Description |
---|
JPEGImageWriteParam(Locale locale)
构造一个
JPEGImageWriteParam 。
|
Modifier and Type | Method and Description |
---|---|
boolean |
areTablesSet()
如果表当前设置,则返回
true 。
|
JPEGHuffmanTable[] |
getACHuffmanTables()
返回在最近一次调用设置阿克·哈弗曼表的数组的副本
setEncodeTables ,或
null 如果表当前没有设置。
|
String[] |
getCompressionQualityDescriptions()
返回一个可以与
getCompressionQualityValues 一起使用的
String s数组,作为设置或显示压缩质量级别的用户界面的一部分。
|
float[] |
getCompressionQualityValues()
返回一个
float 的数组,可以与
getCompressionQualityDescriptions 一起使用,作为设置或显示压缩质量级别的用户界面的一部分。
|
JPEGHuffmanTable[] |
getDCHuffmanTables()
返回在最近一次调用设置为德克·哈弗曼表的数组的副本
setEncodeTables ,或
null 如果表当前没有设置。
|
boolean |
getOptimizeHuffmanTables()
如果
setOptimizeHuffmanTables 从未被调用,则返回传递给最近调用
setOptimizeHuffmanTables 的值或
false 。
|
JPEGQTable[] |
getQTables()
返回在最近一次调用设置的量化表所组成数组的一个副本
setEncodeTables ,或
null 如果表当前没有设置。
|
boolean |
isCompressionLossless()
返回
false 因为JPEG插件仅支持有损压缩。
|
void |
setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
设置用于编码缩写流的量化和霍夫曼表。
|
void |
setOptimizeHuffmanTables(boolean optimize)
告诉作者为写入过程的一部分,为图像生成优化的霍夫曼表。
|
void |
unsetCompression()
删除任何以前的压缩质量设置。
|
void |
unsetEncodeTables()
删除当前设置的任何量化和霍夫曼表。
|
canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, getBitRate, getCompressionMode, getCompressionQuality, getCompressionType, getCompressionTypes, getLocale, getLocalizedCompressionTypeName, getPreferredTileSizes, getProgressiveMode, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getTilingMode, setCompressionMode, setCompressionQuality, setCompressionType, setProgressiveMode, setTiling, setTilingMode, unsetTiling
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
public JPEGImageWriteParam(Locale locale)
JPEGImageWriteParam
。
不支持平铺。
支持逐行编码。
默认逐行模式为MODE_DISABLED。
支持单一形式的压缩,名为“JPEG”。
默认压缩质量为0.75。
locale
-一个
Locale
由超类用于本地化压缩类型名称和质量描述,或
null
。
public void unsetCompression()
默认实现将压缩质量重置为0.75F
。
unsetCompression
在
ImageWriteParam
IllegalStateException
- 如果压缩模式不是
MODE_EXPLICIT
。
ImageWriteParam.setCompressionType(java.lang.String)
,
ImageWriteParam.setCompressionQuality(float)
public boolean isCompressionLossless()
false
因为JPEG插件仅支持有损压缩。
isCompressionLossless
在
ImageWriteParam
false
。
IllegalStateException
- 如果压缩模式不是
MODE_EXPLICIT
。
public String[] getCompressionQualityDescriptions()
ImageWriteParam
String
可与被用于沿小号getCompressionQualityValues
作为用户接口,用于设置或显示压缩质量级别的一部分。
String
,索引i
提供了getCompressionQualityValues[i]
和getCompressionQualityValues[i + 1]
之间的质量范围的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
。
这些描述应该是本地化的Locale
返回的getLocale
,如果它是非null
。
如果有多种压缩类型,但没有设置,则会抛出IllegalStateException
。
默认实现检查压缩是否受支持,压缩模式是MODE_EXPLICIT
。 如果是,如果getCompressionTypes()
是null
或getCompressionType()
是非null
,它返回null
。
getCompressionQualityDescriptions
在
ImageWriteParam
String
s包含压缩质量等级的本地化描述。
ImageWriteParam.getCompressionQualityValues()
public float[] getCompressionQualityValues()
ImageWriteParam
float
可与被用于沿小号getCompressionQualityDescriptions
作为用户接口,用于设置或显示压缩质量级别的一部分。
见getCompressionQualityDescriptions
以获取更多信息。
如果没有可用的描述,则返回null
。 如果null
从getCompressionQualityDescriptions
返回,此方法也必须返回null
。
如果有多种压缩类型,但没有设置,则会抛出一个IllegalStateException
。
默认实现检查压缩是否受支持,压缩模式是MODE_EXPLICIT
。 如果是,如果getCompressionTypes()
是null
或getCompressionType()
是非null
,它返回null
。
getCompressionQualityValues
在
ImageWriteParam
float
的数组表示压缩质量水平之间的界限,如String的
String
getCompressionQualityDescriptions
。
ImageWriteParam.getCompressionQualityDescriptions()
public boolean areTablesSet()
true
。
true
如果表存在。
public void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
null
。
霍夫曼表的两个阵列必须具有相同数量的元素。
假定元数据中的帧和扫描头中的表格符号等同于这些数组中的索引。
参数数组由此方法复制。
qTables
- 量化表对象数组。
DCHuffmanTables
- 一个霍夫曼表对象数组。
ACHuffmanTables
- 一个霍夫曼表对象数组。
IllegalArgumentException
- 如果任何参数是
null
或有超过4个元素,或者DC和AC表的数量不同。
unsetEncodeTables()
public void unsetEncodeTables()
public JPEGQTable[] getQTables()
setEncodeTables
,或
null
如果表当前没有设置。
public JPEGHuffmanTable[] getDCHuffmanTables()
setEncodeTables
或
null
如果表当前未设置)时设置的DC Huffman表数组的副本。
JPEGHuffmanTable
对象,或
null
。
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
public JPEGHuffmanTable[] getACHuffmanTables()
setEncodeTables
,或
null
如果表当前没有设置。
JPEGHuffmanTable
对象,或
null
。
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
public void setOptimizeHuffmanTables(boolean optimize)
false
。
如果此标志设置为true
,它将覆盖元数据中指定的任何表。
请注意,这意味着使用此标志设置为true
任何图像将始终包含霍夫曼表。
optimize
- 一个布尔值,表示写入时是否生成优化的霍夫曼表。
getOptimizeHuffmanTables()
public boolean getOptimizeHuffmanTables()
setOptimizeHuffmanTables
,或
false
如果
setOptimizeHuffmanTables
从未被调用。
true
如果作者将生成优化的霍夫曼表。
setOptimizeHuffmanTables(boolean)