|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
javax.imageio.plugins.jpeg
类 JPEGImageWriteParam
java.lang.Object javax.imageio.IIOParam javax.imageio.ImageWriteParam javax.imageio.plugins.jpeg.JPEGImageWriteParam
-
public class JPEGImageWriteParam
- extends ImageWriteParam
此类添加了使用内置 JPEG writer 插件时设置 JPEG 量化表和 Huffman 表以及请求为图像计算最佳 Huffman 表的能力。此类的实例将从内置 ImageWriter
的 getDefaultImageWriteParam
方法返回。
这些新增功能的主要目的是允许在编码简写流中使用表的规范。内置 JPEG writer 还将接受普通 ImageWriteParam
,在这种情况下,writer 将在内部构造所需的表。
无论是哪种情况,在 ImageWriteParam
中设置的质量对于基础库而言意义都是相同的:1.00 表示全部为 1 的量化表,0.75 表示“标准”量化表(即视觉上无损失量化表),而 0.00 则表示全部为 255 的量化表。
简写流的表常常通过首先写入仅包含表的简写流来指定,在有些应用程序中,这些表是提前准备好的。此类允许直接从客户端代码指定表。
通常,表是在传入 writer 的 IIOMetadata
对象中指定的,这些对象中包括的所有表都会写入流中。如果没有在元数据中指定表,则写入简写流。如果元数据中不包括任何表并且也没有在 JPEGImageWriteParam
中指定任何表,则使用“标准”视觉上无损失表编码简写流。当某个简写流必须在没有首先向流中写入任何表的情况下进行写入时,需要使用此类来指定表。要使用此类,传入 writer 的元数据对象不能包含任何表,并且不能提供任何流元数据。有关默认表的更多信息,请参见
和 JPEGQTable
。JPEGHuffmanTable
writer 的 getDefaultWriteParam
方法返回的默认 JPEGImageWriteParam
不包含任何表。默认表包括在 writer 返回的默认 IIOMetadata
对象中。
如果元数据包含表,则忽略 JPEGImageWriteParam
中给定的表。此外,写入一组表后,只有元数据中的表可以重写它们来进行后续写入,不管写入相同的流还是不同的流。为了使用此类指定新表,必须调用 writer 的
方法。reset
有关内置 JPEG 插件的操作的更新信息,请参见 JPEG metadata format specification and usage notes。
字段摘要 |
---|
从类 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 。 |
String[] |
getCompressionQualityDescriptions() 返回一个 String 数组,可作为用户界面的一部分与 getCompressionQualityValues 一起使用,以设置或显示压缩质量级别。 |
float[] |
getCompressionQualityValues() 返回一个 float 数组,可作为用户界面的一部分与 getCompressionQualityDescriptions 一起使用,以设置或显示压缩质量级别。 |
JPEGHuffmanTable[] |
getDCHuffmanTables() 返回最近一次调用 setEncodeTables 设置的 DC Huffman 表所组成数组的一个副本;如果当前没有设置表,则返回 null 。 |
boolean |
getOptimizeHuffmanTables() 返回传入对 setOptimizeHuffmanTables 的最近一次调用中的值;如果从未调用 setOptimizeHuffmanTables ,则返回 false 。 |
JPEGQTable[] |
getQTables() 返回最近一次调用 setEncodeTables 设置的量化表所组成数组的一个副本;如果当前没有设置表,则返回 null 。 |
boolean |
isCompressionLossless() 返回 false ,因为 JPEG 插件仅支持有损失的压缩。 |
void |
setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables) 设置量化表和 Huffman 表以在编码简写流中使用。 |
void |
setOptimizeHuffmanTables(boolean optimize) 告知 writer 是否作为写入过程的一部分为图像生成最佳 Huffman 表。 |
void |
unsetCompression() 移除所有以前的压缩质量设置值。 |
void |
unsetEncodeTables() 移除当前设置的所有量化表和 Huffman 表。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
JPEGImageWriteParam
public JPEGImageWriteParam(Locale locale)
-
构造一个
JPEGImageWriteParam
。不支持平铺。支持逐步编码。默认的逐步模式为 MODE_DISABLED。支持名为 "JPEG" 的单个压缩形式。默认的压缩质量为 0.75。- 参数:
-
locale
- 要由超类用于本地化压缩类型名称和质量描述的Locale
,或者为null
。
方法详细信息 |
---|
unsetCompression
public void unsetCompression()
-
移除所有以前的压缩质量设置值。
默认实现将压缩质量重置为
0.75F
。 -
- 覆盖:
-
类
ImageWriteParam
中的unsetCompression
-
- 抛出:
-
IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。 - 另请参见:
-
ImageWriteParam.setCompressionType(java.lang.String)
,ImageWriteParam.setCompressionQuality(float)
isCompressionLossless
public boolean isCompressionLossless()
-
返回
false
,因为 JPEG 插件仅支持有损失的压缩。 -
- 覆盖:
-
类
ImageWriteParam
中的isCompressionLossless
-
- 返回:
-
false
。 - 抛出:
-
IllegalStateException
- 如果压缩模式不是MODE_EXPLICIT
。
getCompressionQualityDescriptions
public String[] getCompressionQualityDescriptions()
-
从类
ImageWriteParam
复制的描述 -
返回一个
String
数组,可作为用户界面的一部分与getCompressionQualityValues
一起使用,以设置或显示压缩质量级别。索引为i
的String
提供对质量级别范围的描述,该范围在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
将描述本地化,如果 Locale 为非null
的话。如果有多个压缩类型,但没有设置任何一种压缩类型,则抛出
IllegalStateException
。默认实现检查是否支持压缩,以及压缩模式是否为
MODE_EXPLICIT
。如果是这样,而getCompressionTypes()
为null
或getCompressionType()
为非null
,则返回null
。 -
- 返回:
-
包含压缩质量级别的本地化描述的
String
数组。 - 另请参见:
-
ImageWriteParam.getCompressionQualityValues()
getCompressionQualityValues
public float[] getCompressionQualityValues()
-
从类
ImageWriteParam
复制的描述 -
返回一个
float
数组,可作为用户界面的一部分与getCompressionQualityDescriptions
一起使用,以设置或显示压缩质量级别。有关更多信息,请参阅
。getCompressionQualityDescriptions
如果没有描述可用,则返回
null
。如果从getCompressionQualityDescriptions
返回null
,则此方法也必须返回null
。如果有多个压缩类型,但没有设置任何一种压缩类型,则抛出
IllegalStateException
。默认实现检查是否支持压缩,以及压缩模式是否为
MODE_EXPLICIT
。如果是这样,而getCompressionTypes()
为null
或getCompressionType()
为非null
,则返回null
。 -
- 返回:
-
一个
float
数组,指示getCompressionQualityDescriptions
中的String
描述的压缩质量级别之间的分界线。 - 另请参见:
-
ImageWriteParam.getCompressionQualityDescriptions()
areTablesSet
public boolean areTablesSet()
-
如果表是当前设置的,则返回
true
。 -
- 返回:
-
如果表存在,则返回
true
。
setEncodeTables
public void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
-
设置量化表和 Huffman 表以在编码简写流中使用。每个类型可能至多有 4 个表。如果在元数据中指定了表,则忽略这些表。所有参数都必须为非
null
。两个 Huffman 表的数组必须具有相同的元素数。假定元数据中的帧和扫描标题的表说明符等效于这些数组中的索引。使用此方法复制参数数组。 -
- 参数:
-
qTables
- 量化表对象所组成的数组。 -
DCHuffmanTables
- Huffman 表对象所组成的数组。 -
ACHuffmanTables
- Huffman 表对象所组成的数组。 - 抛出:
-
IllegalArgumentException
- 如果这些参数中的任何一个为null
或者具有 4 个以上的元素,或者 DC 和 AC 的表数不同。 - 另请参见:
-
unsetEncodeTables()
unsetEncodeTables
public void unsetEncodeTables()