javax.imageio.plugins.jpeg

Class JPEGImageWriteParam

public class JPEGImageWriteParam extends ImageWriteParam

The JPEGImageWriteParam class can be used to specify tables and settings used in the JPEG encoding process. Encoding tables are taken from the metadata associated with the output stream, and failing that (if the metadata tables are null) from an instance of JPEGImageWriteParam. The default metadata uses the standard JPEG tables from the JPEGQTable and JPEGHuffmanTable classes. Non-null metadata tables override JPEGImageWriteParam tables. Compression settings range from 1.0, best compression, through 0.75, default compression, to 0.0, worst compression. A JPEGImageWriteParam instance is retrieved from the built-in JPEG ImageWriter using the getDefaultImageWriteParam method.
Constructor Summary
JPEGImageWriteParam(Locale locale)
Construct a JPEGImageWriteParam with the following state: tiling is not supported, progressive mode is supported, initial progressive mode is MODE_DISABLED, compression is supported, one compression type named "JPEG" is supported and the default compression quality is 0.75f.
Method Summary
booleanareTablesSet()
Check if the encoding tables are set.
JPEGHuffmanTable[]getACHuffmanTables()
Retrieve the AC Huffman tables.
String[]getCompressionQualityDescriptions()
Retrieve an array of compression quality descriptions.
float[]getCompressionQualityValues()
Retrieve an array of compression quality values, ordered from lowest quality to highest quality.
JPEGHuffmanTable[]getDCHuffmanTables()
Retrieve the DC Huffman tables.
booleangetOptimizeHuffmanTables()
Check whether or not Huffman tables written to the output stream will be optimized.
JPEGQTable[]getQTables()
Retrieve the quantization tables.
booleanisCompressionLossless()
Check if compression algorithm is lossless.
voidsetEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
Set the quantization and Huffman tables that will be used to encode the stream.
voidsetOptimizeHuffmanTables(boolean optimize)
Specify whether or not Huffman tables written to the output stream should be optimized.
voidunsetCompression()
Reset the compression quality to 0.75f.
voidunsetEncodeTables()
Clear the quantization and Huffman encoding tables.

Constructor Detail

JPEGImageWriteParam

public JPEGImageWriteParam(Locale locale)
Construct a JPEGImageWriteParam with the following state: tiling is not supported, progressive mode is supported, initial progressive mode is MODE_DISABLED, compression is supported, one compression type named "JPEG" is supported and the default compression quality is 0.75f. Compression type names and compression quality descriptions are localized to the given locale.

Parameters: locale the locale used for message localization

Method Detail

areTablesSet

public boolean areTablesSet()
Check if the encoding tables are set.

Returns: true if the encoding tables are set, false otherwise

getACHuffmanTables

public JPEGHuffmanTable[] getACHuffmanTables()
Retrieve the AC Huffman tables.

Returns: an array of JPEG AC Huffman tables

getCompressionQualityDescriptions

public String[] getCompressionQualityDescriptions()
Retrieve an array of compression quality descriptions. These messages are localized using the locale provided upon construction. Each compression quality description in the returned array corresponds to the compression quality value at the same index in the array returned by getCompressionQualityValues.

Returns: an array of strings each of which describes a compression quality value

getCompressionQualityValues

public float[] getCompressionQualityValues()
Retrieve an array of compression quality values, ordered from lowest quality to highest quality.

Returns: an array of compressions quality values

getDCHuffmanTables

public JPEGHuffmanTable[] getDCHuffmanTables()
Retrieve the DC Huffman tables.

Returns: an array of JPEG DC Huffman tables

getOptimizeHuffmanTables

public boolean getOptimizeHuffmanTables()
Check whether or not Huffman tables written to the output stream will be optimized. Unless otherwise set using setOptimizeHuffmanTables, this returns false.

Returns: true Huffman tables written to the output stream will be optimized, false otherwise

getQTables

public JPEGQTable[] getQTables()
Retrieve the quantization tables.

UNKNOWN: an array of JPEG quantization tables

isCompressionLossless

public boolean isCompressionLossless()
Check if compression algorithm is lossless. JPEGImageWriteParam overrides this ImageWriteParam method to always return false since JPEG compression is inherently lossy.

Returns: false

setEncodeTables

public void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
Set the quantization and Huffman tables that will be used to encode the stream. Copies are created of the array arguments. The number of Huffman tables must be the same in both Huffman table arrays. No argument may be null and no array may be longer than four elements.

Parameters: qTables JPEG quantization tables DCHuffmanTables JPEG DC Huffman tables ACHuffmanTables JPEG AC Huffman tables

Throws: IllegalArgumentException if any argument is null, if any of the arrays are longer than four elements, or if the Huffman table arrays do not have the same number of elements

setOptimizeHuffmanTables

public void setOptimizeHuffmanTables(boolean optimize)
Specify whether or not Huffman tables written to the output stream should be optimized. Every image encoded with this flag set will contain a Huffman table, and the generated Huffman tables will override those specified in the metadata.

Parameters: optimize true to generate optimized Huffman tables, false otherwise

unsetCompression

public void unsetCompression()
Reset the compression quality to 0.75f.

unsetEncodeTables

public void unsetEncodeTables()
Clear the quantization and Huffman encoding tables.