javax.imageio.plugins.jpeg
Class JPEGImageWriteParam

java.lang.Object
  extended by javax.imageio.IIOParam
      extended by javax.imageio.ImageWriteParam
          extended by javax.imageio.plugins.jpeg.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.


Field Summary
 
Fields inherited from class 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
 
Fields inherited from class javax.imageio.IIOParam
controller, defaultController, destinationOffset, destinationType, sourceBands, sourceRegion, sourceXSubsampling, sourceYSubsampling, subsamplingXOffset, subsamplingYOffset
 
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
 boolean areTablesSet()
          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.
 boolean getOptimizeHuffmanTables()
          Check whether or not Huffman tables written to the output stream will be optimized.
 JPEGQTable[] getQTables()
          Retrieve the quantization tables.
 boolean isCompressionLossless()
          Check if compression algorithm is lossless.
 void setEncodeTables(JPEGQTable[] qTables, JPEGHuffmanTable[] DCHuffmanTables, JPEGHuffmanTable[] ACHuffmanTables)
          Set the quantization and Huffman tables that will be used to encode the stream.
 void setOptimizeHuffmanTables(boolean optimize)
          Specify whether or not Huffman tables written to the output stream should be optimized.
 void unsetCompression()
          Reset the compression quality to 0.75f.
 void unsetEncodeTables()
          Clear the quantization and Huffman encoding tables.
 
Methods inherited from class javax.imageio.ImageWriteParam
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
 
Methods inherited from class javax.imageio.IIOParam
activateController, getController, getDefaultController, getDestinationOffset, getDestinationType, getSourceBands, getSourceRegion, getSourceXSubsampling, getSourceYSubsampling, getSubsamplingXOffset, getSubsamplingYOffset, hasController, setController, setDestinationOffset, setDestinationType, setSourceBands, setSourceRegion, setSourceSubsampling
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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

unsetCompression

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

Overrides:
unsetCompression in class ImageWriteParam

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.

Overrides:
isCompressionLossless in class ImageWriteParam
Returns:
false

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.

Overrides:
getCompressionQualityDescriptions in class ImageWriteParam
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.

Overrides:
getCompressionQualityValues in class ImageWriteParam
Returns:
an array of compressions quality values

areTablesSet

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

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

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

unsetEncodeTables

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


getQTables

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


getDCHuffmanTables

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

Returns:
an array of JPEG DC Huffman tables

getACHuffmanTables

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

Returns:
an array of JPEG AC Huffman tables

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

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