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.

Field Summary

Fields inherited from class javax.imageio.ImageWriteParam

MODE_COPY_FROM_METADATA, MODE_DEFAULT, MODE_DISABLED, MODE_EXPLICIT, canOffsetTiles, canWriteCompressed, canWriteProgressive, canWriteTiles, compressionMode, compressionQuality, compressionType, compressionTypes, locale, 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, getCompressionQualityDescriptions, getCompressionQualityValues, getCompressionType, getCompressionTypes, getLocale, getLocalizedCompressionTypeName, getPreferredTileSizes, getProgressiveMode, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, getTilingMode, isCompressionLossless, setCompressionMode, setCompressionQuality, setCompressionType, setProgressiveMode, setTiling, setTilingMode, unsetCompression, 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, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

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 Details

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

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 interface ImageWriteParam
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.
Overrides:
unsetCompression in interface ImageWriteParam

unsetEncodeTables

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

JPEGImageWriteParam.java -- Copyright (C) 2006 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.