⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jpegimagereadparam.java

📁 java1.6众多例子参考
💻 JAVA
字号:
/* * @(#)JPEGImageReadParam.java	1.12 05/11/17 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package javax.imageio.plugins.jpeg;import javax.imageio.ImageReadParam;/** * This class adds the ability to set JPEG quantization and Huffman * tables when using the built-in JPEG reader plug-in.  An instance of * this class will be returned from the * <code>getDefaultImageReadParam</code> methods of the built-in JPEG * <code>ImageReader</code>. * * <p> The sole purpose of these additions is to allow the * specification of tables for use in decoding abbreviated streams. * The built-in JPEG reader will also accept an ordinary * <code>ImageReadParam</code>, which is sufficient for decoding * non-abbreviated streams. * * <p> While tables for abbreviated streams are often obtained by * first reading another abbreviated stream containing only the * tables, in some applications the tables are fixed ahead of time. * This class allows the tables to be specified directly from client * code.  If no tables are specified either in the stream or in a * <code>JPEGImageReadParam</code>, then the stream is presumed to use * the "standard" visually lossless tables.  See {@link JPEGQTable * <code>JPEGQTable</code>} and {@link JPEGHuffmanTable * <code>JPEGHuffmanTable</code>} for more information on the default * tables. * * <p> The default <code>JPEGImageReadParam</code> returned by the * <code>getDefaultReadParam</code> method of the builtin JPEG reader * contains no tables.  Default tables may be obtained from the table * classes {@link JPEGQTable <code>JPEGQTable</code>} and {@link * JPEGHuffmanTable <code>JPEGHuffmanTable</code>}. * * <p> If a stream does contain tables, the tables given in a * <code>JPEGImageReadParam</code> are ignored.  Furthermore, if the * first image in a stream does contain tables and subsequent ones do * not, then the tables given in the first image are used for all the * abbreviated images.  Once tables have been read from a stream, they * can be overridden only by tables subsequently read from the same * stream.  In order to specify new tables, the {@link * javax.imageio.ImageReader#setInput <code>setInput</code>} method of * the reader must be called to change the stream. * * <p> Note that this class does not provide a means for obtaining the * tables found in a stream.  These may be extracted from a stream by * consulting the <code>IIOMetadata</code> object returned by the * reader. * * <p> * For more information about the operation of the built-in JPEG plug-ins, * see the <A HREF="../../metadata/doc-files/jpeg_metadata.html">JPEG * metadata format specification and usage notes</A>. * * @version 0.5 */public class JPEGImageReadParam extends ImageReadParam {    private JPEGQTable[] qTables = null;    private JPEGHuffmanTable[] DCHuffmanTables = null;    private JPEGHuffmanTable[] ACHuffmanTables = null;    /**     * Constructs a <code>JPEGImageReadParam</code>.     */    public JPEGImageReadParam() {        super();    }        /**     * Returns <code>true</code> if tables are currently set.     *     * @return <code>true</code> if tables are present.     */    public boolean areTablesSet() {        return (qTables != null);    }    /**     * Sets the quantization and Huffman tables to use in decoding     * abbreviated streams.  There may be a maximum of 4 tables of     * each type.  These tables are ignored once tables are     * encountered in the stream.  All arguments must be     * non-<code>null</code>.  The two arrays of Huffman tables must     * have the same number of elements.  The table specifiers in the     * frame and scan headers in the stream are assumed to be     * equivalent to indices into these arrays.  The argument arrays     * are copied by this method.     *     * @param qTables an array of quantization table objects.     * @param DCHuffmanTables an array of Huffman table objects.     * @param ACHuffmanTables an array of Huffman table objects.     *     * @exception IllegalArgumentException if any of the arguments     * is <code>null</code>, has more than 4 elements, or if the     * numbers of DC and AC tables differ.     *     * @see #unsetDecodeTables     */    public void setDecodeTables(JPEGQTable[] qTables,                                 JPEGHuffmanTable[] DCHuffmanTables,                                JPEGHuffmanTable[] ACHuffmanTables) {        if ((qTables == null) ||            (DCHuffmanTables == null) ||            (ACHuffmanTables == null) ||            (qTables.length > 4) ||            (DCHuffmanTables.length > 4) ||            (ACHuffmanTables.length > 4) ||            (DCHuffmanTables.length != ACHuffmanTables.length)) {                throw new IllegalArgumentException                    ("Invalid JPEG table arrays");        }        this.qTables = (JPEGQTable[])qTables.clone();        this.DCHuffmanTables = (JPEGHuffmanTable[])DCHuffmanTables.clone();        this.ACHuffmanTables = (JPEGHuffmanTable[])ACHuffmanTables.clone();    }    /**     * Removes any quantization and Huffman tables that are currently     * set.     *     * @see #setDecodeTables     */    public void unsetDecodeTables() {        this.qTables = null;        this.DCHuffmanTables = null;        this.ACHuffmanTables = null;    }    /**     * Returns a copy of the array of quantization tables set on the     * most recent call to <code>setDecodeTables</code>, or     * <code>null</code> if tables are not currently set.     *     * @return an array of <code>JPEGQTable</code> objects, or     * <code>null</code>.     *     * @see #setDecodeTables     */    public JPEGQTable[] getQTables() {        return (qTables != null) ? (JPEGQTable[])qTables.clone() : null;    }        /**     * Returns a copy of the array of DC Huffman tables set on the     * most recent call to <code>setDecodeTables</code>, or     * <code>null</code> if tables are not currently set.     *     * @return an array of <code>JPEGHuffmanTable</code> objects, or     * <code>null</code>.     *     * @see #setDecodeTables     */    public JPEGHuffmanTable[] getDCHuffmanTables() {        return (DCHuffmanTables != null)            ? (JPEGHuffmanTable[])DCHuffmanTables.clone()             : null;    }    /**     * Returns a copy of the array of AC Huffman tables set on the     * most recent call to <code>setDecodeTables</code>, or     * <code>null</code> if tables are not currently set.     *     * @return an array of <code>JPEGHuffmanTable</code> objects, or     * <code>null</code>.     *     * @see #setDecodeTables     */    public JPEGHuffmanTable[] getACHuffmanTables() {        return (ACHuffmanTables != null)             ? (JPEGHuffmanTable[])ACHuffmanTables.clone()             : null;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -