Class PNGDecodeParam
- java.lang.Object
-
- org.apache.batik.ext.awt.image.codec.png.PNGDecodeParam
-
- All Implemented Interfaces:
java.io.Serializable,java.lang.Cloneable,ImageDecodeParam
public class PNGDecodeParam extends java.lang.Object implements ImageDecodeParam
An instance ofImageDecodeParamfor decoding images in the PNG format.PNGDecodeParamallows several aspects of the decoding process for PNG images to be controlled. By default, decoding produces output images with the following properties:Images with a bit depth of 8 or less use a
DataBufferByteto hold the pixel data. 16-bit images use aDataBufferUShort.Palette color images and non-transparent grayscale images with bit depths of 1, 2, or 4 will have a
MultiPixelPackedSampleModeland anIndexColorModel. For palette color images, theColorModelpalette contains the red, green, blue, and optionally alpha palette information. For grayscale images, the palette is used to expand the pixel data to cover the range 0-255. The pixels are stored packed 8, 4, or 2 to the byte.All other images are stored using a
PixelInterleavedSampleModelwith each sample of a pixel occupying its ownbyteorshortwithin theDataBuffer. AComponentColorModelis used which simply extracts the red, green, blue, gray, and/or alpha information from separateDataBufferentries.Five aspects of this process may be altered by means of methods in this class.
setSuppressAlpha()prevents an alpha channel from appearing in the output.setExpandPalette()turns palette-color images into 3-or 4-channel full-color images.setOutput8BitGray()causes 1, 2, or 4 bit grayscale images to be output in 8-bit form, using aComponentSampleModelandComponentColorModel.setDecodingExponent()causes the output image to be gamma-corrected using a supplied output gamma value.setExpandGrayAlpha()causes 2-channel gray/alpha (GA) images to be output as full-color (GGGA) images, which may simplify further processing and display.This class is not a committed part of the JAI API. It may be removed or changed in future releases of JAI.
- Version:
- $Id: PNGDecodeParam.java 1805419 2017-08-18 13:04:30Z ssteiner $
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private floatdisplayExponentprivate PNGEncodeParamencodeParamprivate booleanexpandGrayAlphaprivate booleanexpandPaletteprivate booleangenerateEncodeParamprivate booleanoutput8BitGrayprivate booleanperformGammaCorrectionprivate booleansuppressAlphaprivate floatuserExponent
-
Constructor Summary
Constructors Constructor Description PNGDecodeParam()Constructs a default instance ofPNGDecodeParam.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description floatgetDisplayExponent()Returns the current value of the display exponent parameter.PNGEncodeParamgetEncodeParam()IfgetGenerateEncodeParam()istrue, this method may be called after decoding has completed, and will return an instance ofPNGEncodeParamcontaining information about the contents of the PNG file just decoded.booleangetExpandGrayAlpha()Returns the current setting of the gray/alpha expansion.booleangetExpandPalette()Returns true if palette-color images will be expanded to produce full-color output.booleangetGenerateEncodeParam()Returnstrueif an instance ofPNGEncodeParamwill be available after an image has been decoded via thegetEncodeParammethod.booleangetOutput8BitGray()Returns the current value of the 8-bit gray output parameter.booleangetPerformGammaCorrection()Returnstrueif gamma correction is to be performed on the image data.booleangetSuppressAlpha()Returnstrueif alpha (transparency) will be prevented from appearing in the output.floatgetUserExponent()Returns the current value of the user exponent parameter.voidsetDisplayExponent(float displayExponent)Sets the display exponent to a given value.voidsetEncodeParam(PNGEncodeParam encodeParam)Sets the current encoder param instance.voidsetExpandGrayAlpha(boolean expandGrayAlpha)If set, images containing one channel of gray and one channel of alpha (GA) will be output in a 4-channel format (GGGA).voidsetExpandPalette(boolean expandPalette)If set, palette color images (PNG color type 3) will be decoded into full-color (RGB) output images.voidsetGenerateEncodeParam(boolean generateEncodeParam)If set, an instance ofPNGEncodeParamwill be available after an image has been decoded via thegetEncodeParammethod that encapsulates information about the contents of the PNG file.voidsetOutput8BitGray(boolean output8BitGray)If set, grayscale images with a bit depth less than 8 (1, 2, or 4) will be output in 8 bit form.voidsetPerformGammaCorrection(boolean performGammaCorrection)Turns gamma corection of the image data on or off.voidsetSuppressAlpha(boolean suppressAlpha)If set, no alpha (transparency) channel will appear in the output image.voidsetUserExponent(float userExponent)Sets the user exponent to a given value.
-
-
-
Field Detail
-
suppressAlpha
private boolean suppressAlpha
-
expandPalette
private boolean expandPalette
-
output8BitGray
private boolean output8BitGray
-
performGammaCorrection
private boolean performGammaCorrection
-
userExponent
private float userExponent
-
displayExponent
private float displayExponent
-
expandGrayAlpha
private boolean expandGrayAlpha
-
generateEncodeParam
private boolean generateEncodeParam
-
encodeParam
private PNGEncodeParam encodeParam
-
-
Method Detail
-
getSuppressAlpha
public boolean getSuppressAlpha()
Returnstrueif alpha (transparency) will be prevented from appearing in the output.
-
setSuppressAlpha
public void setSuppressAlpha(boolean suppressAlpha)
If set, no alpha (transparency) channel will appear in the output image.The default is to allow transparency to appear in the output image.
-
getExpandPalette
public boolean getExpandPalette()
Returns true if palette-color images will be expanded to produce full-color output.
-
setExpandPalette
public void setExpandPalette(boolean expandPalette)
If set, palette color images (PNG color type 3) will be decoded into full-color (RGB) output images. The output image may have 3 or 4 channels, depending on the presence of transparency information.The default is to output palette images using a single channel. The palette information is used to construct the output image's
ColorModel.
-
getOutput8BitGray
public boolean getOutput8BitGray()
Returns the current value of the 8-bit gray output parameter.
-
setOutput8BitGray
public void setOutput8BitGray(boolean output8BitGray)
If set, grayscale images with a bit depth less than 8 (1, 2, or 4) will be output in 8 bit form. The output values will occupy the full 8-bit range. For example, gray values 0, 1, 2, and 3 of a 2-bit image will be output as 0, 85, 170, and 255.The decoding of non-grayscale images and grayscale images with a bit depth of 8 or 16 are unaffected by this setting.
The default is not to perform expansion. Grayscale images with a depth of 1, 2, or 4 bits will be represented using a
MultiPixelPackedSampleModeland anIndexColorModel.
-
getPerformGammaCorrection
public boolean getPerformGammaCorrection()
Returnstrueif gamma correction is to be performed on the image data. The default istrue.If gamma correction is to be performed, the
getUserExponent()andgetDisplayExponent()methods are used in addition to the gamma value stored within the file (or the default value of 1/2.2 used if no value is found) to produce a single exponent using the formula:decoding_exponent = user_exponent/(gamma_from_file * display_exponent)
-
setPerformGammaCorrection
public void setPerformGammaCorrection(boolean performGammaCorrection)
Turns gamma corection of the image data on or off.
-
getUserExponent
public float getUserExponent()
Returns the current value of the user exponent parameter. By default, the user exponent is equal to 1.0F.
-
setUserExponent
public void setUserExponent(float userExponent)
Sets the user exponent to a given value. The exponent must be positive. If not, anIllegalArgumentExceptionwill be thrown.The output image pixels will be placed through a transformation of the form:
sample = integer_sample / (2^bitdepth - 1.0) decoding_exponent = user_exponent/(gamma_from_file * display_exponent) output = sample ^ decoding_exponent
wheregamma_from_fileis the gamma of the file data, as determined by thegAMA,sRGB, and/oriCCPchunks, anddisplay_exponentis the exponent of the intrinsic transfer curve of the display, generally 2.2.Input files which do not specify any gamma are assumed to have a gamma of
1/2.2; such images may be displayed on a CRT with an exponent of 2.2 using the default user exponent of 1.0.The user exponent may be used in order to change the effective gamma of a file. If a file has a stored gamma of X, but the decoder believes that the true file gamma is Y, setting a user exponent of Y/X will produce the same result as changing the file gamma.
This parameter affects the decoding of all image types.
- Throws:
java.lang.IllegalArgumentException- ifuserExponentis negative.
-
getDisplayExponent
public float getDisplayExponent()
Returns the current value of the display exponent parameter. By default, the display exponent is equal to 2.2F.
-
setDisplayExponent
public void setDisplayExponent(float displayExponent)
Sets the display exponent to a given value. The exponent must be positive. If not, anIllegalArgumentExceptionwill be thrown.The output image pixels will be placed through a transformation of the form:
sample = integer_sample / (2^bitdepth - 1.0) decoding_exponent = user_exponent/(gamma_from_file * display_exponent) output = sample ^ decoding_exponent
wheregamma_from_fileis the gamma of the file data, as determined by thegAMA,sRGB, and/oriCCPchunks, anduser_exponentis an additional user-supplied parameter.Input files which do not specify any gamma are assumed to have a gamma of
1/2.2; such images should be decoding using the default display exponent of 2.2.If an image is to be processed further before being displayed, it may be preferable to set the display exponent to 1.0 in order to produce a linear output image.
This parameter affects the decoding of all image types.
- Throws:
java.lang.IllegalArgumentException- ifuserExponentis negative.
-
getExpandGrayAlpha
public boolean getExpandGrayAlpha()
Returns the current setting of the gray/alpha expansion.
-
setExpandGrayAlpha
public void setExpandGrayAlpha(boolean expandGrayAlpha)
If set, images containing one channel of gray and one channel of alpha (GA) will be output in a 4-channel format (GGGA). This produces output that may be simpler to process and display.This setting affects both images of color type 4 (explicit alpha) and images of color type 0 (grayscale) that contain transparency information.
By default, no expansion is performed.
-
getGenerateEncodeParam
public boolean getGenerateEncodeParam()
Returnstrueif an instance ofPNGEncodeParamwill be available after an image has been decoded via thegetEncodeParammethod.
-
setGenerateEncodeParam
public void setGenerateEncodeParam(boolean generateEncodeParam)
If set, an instance ofPNGEncodeParamwill be available after an image has been decoded via thegetEncodeParammethod that encapsulates information about the contents of the PNG file. If not set, this information will not be recorded andgetEncodeParam()will returnnull.
-
getEncodeParam
public PNGEncodeParam getEncodeParam()
IfgetGenerateEncodeParam()istrue, this method may be called after decoding has completed, and will return an instance ofPNGEncodeParamcontaining information about the contents of the PNG file just decoded.
-
setEncodeParam
public void setEncodeParam(PNGEncodeParam encodeParam)
Sets the current encoder param instance. This method is intended to be called by the PNG decoder and will overwrite the current instance returned bygetEncodeParam.
-
-