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

📄 jpegdecodeparam.java

📁 java1.6众多例子参考
💻 JAVA
字号:
/* * @(#)JPEGDecodeParam.java	1.10 06/06/29 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//********************************************************************** ********************************************************************** ********************************************************************** *** COPYRIGHT (c) 1997-1998 Eastman Kodak Company.                 *** *** As  an unpublished  work pursuant to Title 17 of the United    *** *** States Code.  All rights reserved.                             *** ********************************************************************** ********************************************************************** **********************************************************************/package com.sun.image.codec.jpeg;/**  * JPEGDecodeParam encapsulates tables and options necessary to * control decoding JPEG datastreams. Parameters are either set explicitly * by the application for encoding, or read from the JPEG header for * decoding.  In the case of decoding abbreviated data streams the * application may need to set some/all of the values it's self.  <p> * When working with BufferedImages ({@link * com.sun.image.codec.jpeg.JPEGImageDecoder#decodeAsBufferedImage}), * the codec will attempt to * generate an appropriate ColorModel for the JPEG COLOR_ID. This is * not always possible (example mappings are listed below) .  In cases * where unsupported conversions are required, or unknown encoded * COLOR_ID's are in use, the user must request the data as a Raster * and perform the transformations themselves.  When decoding into a * raster ({@link com.sun.image.codec.jpeg.JPEGImageDecoder#decodeAsRaster}) * no ColorSpace adjustments are made.  * Note: The color ids described herein are simply enumerated values * that influence data processing by the JPEG codec.  JPEG compression * is by definition color blind.  These values are used as hints when * decompressing JPEG data.  Of particular interest is the default * conversion from YCbCr to sRGB when decoding buffered Images.<P> * Note: because JPEG is mostly color-blind color fidelity can not be * garunteed.  This will hopefully be rectified in the near future by * the wide spread inclusion of ICC-profiles in the JPEG data stream * (as a special marker). * The following is an example of the conversions that take place. * This is only a guide to the types of conversions that are allowed. * This list is likely to change in the future so it is * <B>strongly</B> recommended that you check for thrown * ImageFormatExceptions and check the actual ColorModel associated * with the BufferedImage returned rather than make assumtions. * <pre>    DECODING:        JPEG (Encoded) Color ID         BufferedImage ColorSpace    =======================         ========================    COLOR_ID_UNKNOWN                ** Invalid **    COLOR_ID_GRAY                   CS_GRAY    COLOR_ID_RGB                    CS_sRGB    COLOR_ID_YCbCr                  CS_sRGB    COLOR_ID_CMYK                   ** Invalid **    COLOR_ID_PYCC                   CS_PYCC    COLOR_ID_RGBA                   CS_sRGB (w/ alpha)    COLOR_ID_YCbCrA                 CS_sRGB (w/ alpha)    COLOR_ID_RGBA_INVERTED          ** Invalid **    COLOR_ID_YCbCrA_INVERTED        ** Invalid **    COLOR_ID_PYCCA                  CS_PYCC (w/ alpha)    COLOR_ID_YCCK                   ** Invalid **	</pre> * If the user needs better control over conversion, the user must * request the data as a Raster and handle the conversion of the image * data themselves.<p> * When decoding JFIF files the encoded COLOR_ID will always be one * of: COLOR_ID_UNKNOWN, COLOR_ID_GRAY, COLOR_ID_RGB, COLOR_ID_YCbCr, * COLOR_ID_CMYK, or COLOR_ID_YCCK * <p> * Note that the classes in the com.sun.image.codec.jpeg package are not * part of the core Java APIs.  They are a part of Sun's JDK and JRE * distributions.  Although other licensees may choose to distribute these * classes, developers cannot depend on their availability in non-Sun * implementations.  We expect that equivalent functionality will eventually * be available in a core API or standard extension. * <p> */public interface JPEGDecodeParam extends Cloneable {    /** Unknown or Undefined Color ID */    public final static int COLOR_ID_UNKNOWN = 0;        /** Monochrome */    public final static int COLOR_ID_GRAY = 1;    /** Red, Green, and Blue */    public final static int COLOR_ID_RGB = 2;    /** YCbCr */    public final static int COLOR_ID_YCbCr = 3;    /** CMYK */    public final static int COLOR_ID_CMYK = 4;    /** PhotoYCC */    public final static int COLOR_ID_PYCC = 5;     /** RGB-Alpha */	public final static int COLOR_ID_RGBA = 6;     /** YCbCr-Alpha */    public final static int COLOR_ID_YCbCrA = 7;    /** RGB-Alpha with R, G, and B inverted.*/    public final static int COLOR_ID_RGBA_INVERTED = 8;     /** YCbCr-Alpha with Y, Cb, and Cr inverted.*/    public final static int COLOR_ID_YCbCrA_INVERTED = 9;	    /** PhotoYCC-Alpha */    public final static int COLOR_ID_PYCCA = 10;    /** YCbCrK */    public final static int COLOR_ID_YCCK = 11;	        /** Number of color ids defined. */    final static int NUM_COLOR_ID = 12;	/** Number of allowed Huffman and Quantization Tables */    final static int  NUM_TABLES = 4;  		/** The X and Y units simply indicate the aspect ratio of the pixels. */	public  final static int DENSITY_UNIT_ASPECT_RATIO = 0;	/** Pixel density is in pixels per inch. */	public  final static int DENSITY_UNIT_DOTS_INCH    = 1;	/** Pixel density is in pixels per centemeter. */	public  final static int DENSITY_UNIT_DOTS_CM      = 2;	/** The max known value for DENSITY_UNIT */	final static int NUM_DENSITY_UNIT = 3;	/** APP0 marker - JFIF info */	public final static int APP0_MARKER  = 0xE0;	/** APP1 marker */	public final static int APP1_MARKER  = 0xE1;	/** APP2 marker */	public final static int APP2_MARKER  = 0xE2;	/** APP3 marker */	public final static int APP3_MARKER  = 0xE3;	/** APP4 marker */	public final static int APP4_MARKER  = 0xE4;	/** APP5 marker */	public final static int APP5_MARKER  = 0xE5;	/** APP6 marker */	public final static int APP6_MARKER  = 0xE6;	/** APP7 marker */	public final static int APP7_MARKER  = 0xE7;	/** APP8 marker */	public final static int APP8_MARKER  = 0xE8;	/** APP9 marker */	public final static int APP9_MARKER  = 0xE9;	/** APPA marker */	public final static int APPA_MARKER  = 0xEA;	/** APPB marker */	public final static int APPB_MARKER  = 0xEB;	/** APPC marker */	public final static int APPC_MARKER  = 0xEC;	/** APPD marker */	public final static int APPD_MARKER  = 0xED;	/** APPE marker - Adobe info */	public final static int APPE_MARKER  = 0xEE;	/** APPF marker */	public final static int APPF_MARKER  = 0xEF;	/** Adobe marker indicates presence/need for Adobe marker. */	public final static int COMMENT_MARKER = 0XFE;	public Object clone();		/** 	 * Get the image width	 * @return int the width of the image data in pixels.	 */	public int  getWidth();	/** Get the image height	 * @return The height of the image data in pixels.	 */	public int  getHeight();	/** 	 * Return the Horizontal subsampling factor for requested	 * Component.  The Subsample factor is the number of input pixels	 * that contribute to each output pixel.  This is distinct from	 * the way the JPEG to each output pixel.  This is distinct from	 * the way the JPEG standard defines this quantity, because	 * fractional subsampling factors are not allowed, and it was felt	 * @param component The component of the encoded image to return	 * the subsampling factor for.	 * @return The subsample factor.	 */	public int getHorizontalSubsampling(int component);	/** 	 * Return the Vertical subsampling factor for requested	 * Component.  The Subsample factor is the number of input pixels	 * that contribute to each output pixel.  This is distinct from	 * the way the JPEG to each output pixel.  This is distinct from	 * the way the JPEG standard defines this quantity, because	 * fractional subsampling factors are not allowed, and it was felt	 * @param component The component of the encoded image to return	 * the subsampling factor for.	 * @return The subsample factor.	 */	public int getVerticalSubsampling(int component);	/** 	 * Returns the coefficient quantization tables or NULL if not	 * defined. tableNum must range in value from 0 - 3.	 * @param tableNum the index of the table to be returned.	 * @return Quantization table stored at index tableNum.	 */	public JPEGQTable  getQTable(int tableNum );	/**	 * Returns the Quantization table for the requested component.	 * @param component the image component of interest.	 * @return Quantization table associated with component	 */		public JPEGQTable getQTableForComponent(int component);	/** 	 * Returns the DC Huffman coding table requested or null if	 * not defined	 * @param tableNum the index of the table to be returned.	 * @return Huffman table stored at index tableNum.  	 */		public JPEGHuffmanTable getDCHuffmanTable( int tableNum );	/**	 * Returns the DC Huffman coding table for the requested component.	 * @param component the image component of interest.	 * @return Huffman table associated with component	 */		public JPEGHuffmanTable getDCHuffmanTableForComponent(int component);			/** 	 * Returns the AC Huffman coding table requested or null if	 * not defined	 * @param tableNum the index of the table to be returned.	 * @return Huffman table stored at index tableNum.  	 */		public JPEGHuffmanTable getACHuffmanTable( int tableNum );	/**	 	 * Returns the AC Huffman coding table for the requested component.	 * @param component the image component of interest.	 * @return Huffman table associated with component	 */		public JPEGHuffmanTable getACHuffmanTableForComponent(int component);	/**	 * Get the number of the DC Huffman table that will be used for	 * a particular component.	 * @param component The Component of interest.	 * @return The table number of the DC Huffman table for component.	 */	public int getDCHuffmanComponentMapping(int component);	/**	 * Get the number of the AC Huffman table that will be used for	 * a particular component.	 * @param component The Component of interest.	 * @return The table number of the AC Huffman table for component.	 */	public int getACHuffmanComponentMapping(int component);	/**	 * Get the number of the quantization table that will be used for	 * a particular component.	 * @param component The Component of interest.	 * @return The table number of the Quantization table for component.	 */	public int getQTableComponentMapping(int component);	/**	 * Returns true if the image information in the ParamBlock is	 * currently valid.  This indicates if image data was read from	 * the stream for decoding and weather image data should be	 * written when encoding.	 */	public boolean isImageInfoValid();	/** 	 * Returns true if the tables in the ParamBlock are currently	 * valid.  This indicates that tables were read from the stream	 * for decoding. When encoding this indicates wether tables should	 * be written to the stream.	 */	public boolean isTableInfoValid();	/** 	 * Returns true if at least one instance of the marker is present	 * in the Parameter object.  For encoding returns true if there	 * is at least one instance of the marker to be written.	 * @param marker The marker of interest.	 */	public boolean getMarker(int marker);	/**	 * Returns a 'byte[][]' associated with the requested marker in	 * the parameter object.  Each entry in the 'byte[][]' is the data	 * associated with one instance of the marker (each marker can	 * theoretically appear any number of times in a stream).	 * @param marker The marker of interest.	 * @return The 'byte[][]' for this marker or null if none	 *         available.	 */	public byte[][] getMarkerData(int marker);	/** 	 * Returns the JPEG Encoded color id. This is generally	 * speaking only used if you are decoding into Rasters.  Note	 * that when decoding into a Raster no color conversion is	 * performed.	 * @return The value of the JPEG encoded data's color id.	 */    public int getEncodedColorID();	/**	 * Returns the number of components for the current encoding	 * COLOR_ID.	 * @return the number of Components	 */	public int getNumComponents();	/** 	 * Get the MCUs per restart marker.	 * @return The number of MCUs between restart markers.	 */	public int getRestartInterval();	/** 	 * Get the code for pixel size units This value is copied from the	 * APP0 marker. It isn't used by the JPEG codec.  If the APP0	 * marker wasn't present then you can not rely on this value.	 * @return Value indicating the density unit one of the	 * DENSITY_UNIT_* constants.	 */	public int getDensityUnit();	/** 	 * Get the horizontal pixel density This value is copied from the	 * APP0 marker. It isn't used by the JPEG code.  If the APP0	 * marker wasn't present then you can not rely on this value.	 * @return The horizontal pixel density, in units described by	 * @see #getDensityUnit()	 */	public int getXDensity();	/** 	 * Get the vertical pixel density This value is copied into the	 * APP0 marker. It isn't used by the JPEG code. If the APP0 marker	 * wasn't present then you can not rely on this value.	 * @return The verticle pixel density, in units described by	 * @see #getDensityUnit()	 */	public int getYDensity();	}

⌨️ 快捷键说明

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