ImageWriter
的 getDefaultImageWriteParam
方法返回。
这些添加的主要目的是允许表的规范用于编码缩略流。内置的 JPEG 编写器也将接受普通的 ImageWriteParam
,在这种情况下,编写器将在内部构建必要的表格。
在任何一种情况下,ImageWriteParam
中的质量设置与底层库具有相同的含义:1.00 表示全 1 的量化表,0.75 表示“标准”、视觉上无损的量化表,0.00 表示全 255 的量化表。
虽然缩略流的表通常是通过首先编写仅包含表的缩略流来指定的,但在某些应用程序中,表是提前固定的。此类允许直接从客户端代码指定表。
通常,这些表在传递给编写器的 IIOMetadata
对象中指定,并且这些对象中包含的任何表都写入流中。如果元数据中未指定任何表,则会写入一个缩略流。如果元数据中不包含任何表并且在 JPEGImageWriteParam
中未指定任何表,则使用“标准”视觉无损表对缩略流进行编码。当必须先写入缩写流而不先将任何表写入流时,此类对于指定表是必需的。为了使用这个类,传递给编写器的元数据对象不能包含表,也不能提供流元数据。有关默认表的更多信息,请参阅 JPEGQTable
和 JPEGHuffmanTable
。
作者的 getDefaultWriteParam
方法返回的默认 JPEGImageWriteParam
不包含任何表。默认表包含在作者返回的默认 IIOMetadata
对象中。
如果元数据确实包含表格,则 JPEGImageWriteParam
中给出的表格将被忽略。此外,一旦一组表被写入,只有元数据中的表可以覆盖它们以进行后续写入,无论是写入相同的流还是不同的流。为了使用此类指定新表,必须调用编写器的reset
方法。
有关内置 JPEG 插件操作的更多信息,请参阅 JPEG 元数据格式规范和使用说明。
-
字段摘要
在类 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
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述boolean
如果当前设置了表格,则返回true
。返回最近一次调用setEncodeTables
或null
(如果当前未设置表)时设置的 AC 霍夫曼表数组的副本。返回最近一次调用setEncodeTables
时设置的 DC Huffman 表数组的副本,如果当前未设置表,则返回null
。boolean
返回传递给最近调用setOptimizeHuffmanTables
的值,如果setOptimizeHuffmanTables
从未被调用过,则返回false
。返回最近一次调用setEncodeTables
或null
(如果当前未设置表)时设置的量化表数组的副本。boolean
返回false
,因为 JPEG 插件仅支持有损压缩。void
setEncodeTables
(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables) 设置量化和霍夫曼表以用于编码缩略流。void
setOptimizeHuffmanTables
(boolean optimize) 作为写入过程的一部分,告诉作者为图像生成优化的霍夫曼表。void
删除任何以前的压缩质量设置。void
删除当前设置的任何量化和霍夫曼表。在类 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
构造一个JPEGImageWriteParam
。不支持平铺。支持渐进式编码。默认的渐进模式是 MODE_DISABLED。支持一种名为“JPEG”的压缩形式。默认压缩质量为 0.75。- 参数:
locale
- 超类用于本地化压缩类型名称和质量描述的Locale
,或null
。
-
-
方法详情
-
unsetCompression
public void unsetCompression()删除任何以前的压缩质量设置。默认实现将压缩质量重置为
0.75F
。- 重写:
unsetCompression
在类ImageWriteParam
中- 抛出:
IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。- 参见:
-
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) 设置量化和霍夫曼表以用于编码缩略流。每种类型最多可以有 4 个表。如果在元数据中指定了表,这些表将被忽略。所有参数都必须是非null
。霍夫曼表的两个数组必须具有相同数量的元素。假定元数据中帧和扫描标头中的表说明符等同于这些数组中的索引。参数数组由此方法复制。- 参数:
qTables
- 量化表对象数组。DCHuffmanTables
- 霍夫曼表对象数组。ACHuffmanTables
- 霍夫曼表对象数组。- 抛出:
IllegalArgumentException
- 如果任何参数是null
或具有超过 4 个元素,或者 DC 和 AC 表的数量不同。- 参见:
-
unsetEncodeTables
public void unsetEncodeTables()删除当前设置的任何量化和霍夫曼表。- 参见:
-
getQTables
返回最近一次调用setEncodeTables
或null
(如果当前未设置表)时设置的量化表数组的副本。- 返回:
JPEGQTable
对象数组,或null
。- 参见:
-
getDCHuffmanTables
返回最近一次调用setEncodeTables
时设置的 DC Huffman 表数组的副本,如果当前未设置表,则返回null
。- 返回:
JPEGHuffmanTable
对象数组,或null
。- 参见:
-
getACHuffmanTables
返回最近一次调用setEncodeTables
或null
(如果当前未设置表)时设置的 AC 霍夫曼表数组的副本。- 返回:
JPEGHuffmanTable
对象数组,或null
。- 参见:
-
setOptimizeHuffmanTables
public void setOptimizeHuffmanTables(boolean optimize) 作为写入过程的一部分,告诉作者为图像生成优化的霍夫曼表。默认值为false
。如果此标志设置为true
,它将覆盖元数据中指定的任何表。请注意,这意味着使用此标志设置为true
写入的任何图像将始终包含霍夫曼表。- 参数:
optimize
- 一个boolean,指示写入时是否生成优化的霍夫曼表。- 参见:
-
getOptimizeHuffmanTables
public boolean getOptimizeHuffmanTables()返回传递给最近调用setOptimizeHuffmanTables
的值,如果setOptimizeHuffmanTables
从未被调用过,则返回false
。- 返回:
true
如果编写器将生成优化的霍夫曼表。- 参见:
-