- java.lang.Object
-
- javax.imageio.IIOParam
-
- javax.imageio.ImageWriteParam
-
- javax.imageio.plugins.jpeg.JPEGImageWriteParam
-
public class JPEGImageWriteParam extends ImageWriteParam
此类添加了在使用内置JPEG编写器插件时设置JPEG量化和霍夫曼表的功能,并请求为图像计算优化的霍夫曼表。 将从内置JPEGImageWriter
的getDefaultImageWriteParam
方法返回此类的实例。这些添加的主要目的是允许表格的规范用于编码缩写流。 内置的JPEG
ImageWriteParam
也将接受普通的ImageWriteParam
,在这种情况下,ImageWriteParam
将在内部构建必要的表。在任何一种情况下,
ImageWriteParam
的质量设置与底层库的含义相同:1.00表示所有1的量化表,0.75表示“标准”,视觉无损量化表,0.00表示所有255的水化表。虽然缩写流的表通常通过首先编写仅包含表的缩写流来指定,但在某些应用程序中,表是提前修复的。 此类允许直接从客户端代码指定表。
通常,这些表在传递给writer的
IIOMetadata
对象中指定,并且这些对象中包含的所有表都将写入流中。 如果元数据中未指定表,则写入缩写流。 如果元数据中不包含表,并且JPEGImageWriteParam
未指定表,则使用“标准”视觉无损表对缩写流进行编码。 当必须先写入缩写流而不先将任何表写入流时,必须使用此类来指定表。 为了使用此类,传递给writer的元数据对象必须不包含表,并且不能提供流元数据。 有关默认表的更多信息,请参见JPEGQTable
和JPEGHuffmanTable
。JPEGImageWriteParam
的getDefaultWriteParam
方法返回的默认值JPEGImageWriteParam
不包含任何表。 默认表包含在IIOMetadata
返回的默认IIOMetadata
对象中。如果元数据确实包含表,则忽略
JPEGImageWriteParam
中给出的表。 此外,一旦编写了一组表,只有元数据中的表可以覆盖它们以用于后续写入,无论是相同的流还是不同的流。 要使用此类指定新表,必须调用writer的reset
方法。有关内置JPEG插件操作的详细信息,请参阅JPEG metadata format specification and usage notes 。
-
-
字段汇总
-
声明的属性在类 javax.imageio.ImageWriteParam
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
-
声明的属性在类 javax.imageio.IIOParam
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
-
-
构造方法摘要
构造方法 构造器 描述 JPEGImageWriteParam(Locale locale)
构造一个JPEGImageWriteParam
。
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 boolean
areTablesSet()
如果当前设置了表,则返回true
。JPEGHuffmanTable[]
getACHuffmanTables()
返回最近一次调用setEncodeTables
上设置的AC Huffman表数组的副本,如果当前未设置表,则null
。JPEGHuffmanTable[]
getDCHuffmanTables()
返回最近一次调用setEncodeTables
上设置的DC Huffman表数组的副本,如果当前未设置表,则null
。boolean
getOptimizeHuffmanTables()
返回传递到最近一次调用价值setOptimizeHuffmanTables
,或false
如果setOptimizeHuffmanTables
从未被调用。JPEGQTable[]
getQTables()
返回最近一次调用setEncodeTables
上设置的量化表数组的副本,如果当前未设置表,则null
。boolean
isCompressionLossless()
返回false
因为JPEG插件仅支持有损压缩。void
setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
设置量化和Huffman表以用于编码缩写流。void
setOptimizeHuffmanTables(boolean optimize)
告诉作者在写入过程中为图像生成优化的霍夫曼表。void
unsetCompression()
删除任何先前的压缩质量设置。void
unsetEncodeTables()
删除当前设置的所有量化和Huffman表。-
声明方法的类 javax.imageio.ImageWriteParam
canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, getBitRate, getCompressionMode, getCompressionQuality, getCompressionQualityDescriptions, getCompressionQualityValues, getCompressionType, getCompressionTypes, getLocale, getLocalizedCompressionTypeName, getPreferredTileSizes, getProgressiveMode, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getTilingMode, setCompressionMode, setCompressionQuality, setCompressionType, setProgressiveMode, setTiling, setTilingMode, unsetTiling
-
声明方法的类 javax.imageio.IIOParam
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
-
-
-
-
构造方法详细信息
-
JPEGImageWriteParam
public JPEGImageWriteParam(Locale locale)
构造一个JPEGImageWriteParam
。 平铺不受支持。 支持渐进式编码。 默认渐进模式为MODE_DISABLED。 支持单一形式的压缩,名为“JPEG”。 默认压缩质量为0.75。- 参数
-
locale
-一个Locale
由超类用于本地化压缩类型名称和质量描述,或null
。
-
-
方法详细信息
-
unsetCompression
public void unsetCompression()
删除任何先前的压缩质量设置。默认实现将压缩质量重置为
0.75F
。- 重写:
-
unsetCompression
在类ImageWriteParam
- 异常
-
IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。 - 另请参见:
-
ImageWriteParam.setCompressionType(java.lang.String)
,ImageWriteParam.setCompressionQuality(float)
-
isCompressionLossless
public boolean isCompressionLossless()
返回false
因为JPEG插件仅支持有损压缩。- 重写:
-
isCompressionLossless
类ImageWriteParam
- 结果
-
false
。 - 异常
-
IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。
-
areTablesSet
public boolean areTablesSet()
如果当前设置了表,则返回true
。- 结果
-
true
如果存在表格。
-
setEncodeTables
public void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
设置量化和Huffman表以用于编码缩写流。 每种类型最多可以有4个表。 如果在元数据中指定了表,则忽略这些表。 所有参数必须为非null
。 两个Huffman表数组必须具有相同数量的元素。 假设元数据中的帧和扫描头中的表说明符等同于这些数组中的索引。 参数数组由此方法复制。- 参数
-
qTables
- 量化表对象的数组。 -
DCHuffmanTables
- 霍夫曼表对象的数组。 -
ACHuffmanTables
- 霍夫曼表对象的数组。 - 异常
-
IllegalArgumentException
- 如果任何参数为null
或具有4个以上的元素,或者DC和AC表的数量不同。 - 另请参见:
-
unsetEncodeTables()
-
unsetEncodeTables
public void unsetEncodeTables()
删除当前设置的所有量化和Huffman表。
-
getQTables
public JPEGQTable[] getQTables()
返回最近一次调用setEncodeTables
上设置的量化表数组的副本,如果当前未设置表,则null
。
-
getDCHuffmanTables
public JPEGHuffmanTable[] getDCHuffmanTables()
返回最近一次调用setEncodeTables
上设置的DC Huffman表数组的副本,如果当前未设置表,则null
。- 结果
-
JPEGHuffmanTable
对象的数组,或null
。 - 另请参见:
-
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
-
getACHuffmanTables
public JPEGHuffmanTable[] getACHuffmanTables()
返回最近一次调用setEncodeTables
上设置的AC Huffman表数组的副本,如果当前未设置表,则null
。- 结果
-
JPEGHuffmanTable
对象的数组,或null
。 - 另请参见:
-
setEncodeTables(javax.imageio.plugins.jpeg.JPEGQTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[], javax.imageio.plugins.jpeg.JPEGHuffmanTable[])
-
setOptimizeHuffmanTables
public void setOptimizeHuffmanTables(boolean optimize)
告诉作者在写入过程中为图像生成优化的霍夫曼表。 默认值为false
。 如果此标志设置为true
,则它将覆盖元数据中指定的所有表。 请注意,这意味着使用此标志设置为true
写入的任何图像将始终包含霍夫曼表。- 参数
-
optimize
- 一个布尔值,指示在写入时是否生成优化的霍夫曼表。 - 另请参见:
-
getOptimizeHuffmanTables()
-
getOptimizeHuffmanTables
public boolean getOptimizeHuffmanTables()
返回传递到最近一次调用价值setOptimizeHuffmanTables
,或false
如果setOptimizeHuffmanTables
从未被调用。- 结果
-
true
如果true
将生成优化的霍夫曼表。 - 另请参见:
-
setOptimizeHuffmanTables(boolean)
-
-