Class PSDImageReader
- java.lang.Object
-
- javax.imageio.ImageReader
-
- com.twelvemonkeys.imageio.ImageReaderBase
-
- com.twelvemonkeys.imageio.plugins.psd.PSDImageReader
-
public final class PSDImageReader extends ImageReaderBase
ImageReader for Adobe Photoshop Document (PSD) format.- Version:
- $Id: PSDImageReader.java,v 1.0 Apr 29, 2008 4:45:52 PM haraldk Exp$
- See Also:
- Adobe Photoshop File Formats Specification, Adobe Photoshop File Format Summary
-
-
Field Summary
Fields Modifier and Type Field Description private java.awt.color.ICC_ColorSpacecolorSpace(package private) static booleanDEBUGprivate PSDHeaderheaderprivate PSDMetadatametadata-
Fields inherited from class com.twelvemonkeys.imageio.ImageReaderBase
imageInput
-
-
Constructor Summary
Constructors Constructor Description PSDImageReader(javax.imageio.spi.ImageReaderSpi originatingProvider)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidconvertToDestinationCS(java.awt.image.ColorModel sourceCM, java.awt.image.ColorModel destinationCM, java.awt.image.WritableRaster raster)private int[]createBandList(int numBands)private static bytedecompose(int pColor, double pAlpha)private voiddecomposeAlpha(java.awt.image.ColorModel pModel, java.awt.image.DataBuffer pBuffer, int pWidth, int pHeight, int pChannels)private longfindLayerStartPos(int layerIndex)private java.awt.color.ColorSpacegetEmbeddedColorSpace()intgetHeight(int imageIndex)javax.imageio.metadata.IIOMetadatagetImageMetadata(int imageIndex)Default implementation that always returnsnull.javax.imageio.metadata.IIOMetadatagetImageMetadata(int imageIndex, java.lang.String formatName, java.util.Set<java.lang.String> nodeNames)java.util.Iterator<javax.imageio.ImageTypeSpecifier>getImageTypes(int imageIndex)private intgetLayerHeight(int layerIndex)private intgetLayerWidth(int layerIndex)intgetNumImages(boolean allowSearch)Default implementation that always returns1.intgetNumThumbnails(int imageIndex)javax.imageio.ImageTypeSpecifiergetRawImageType(int imageIndex)private javax.imageio.ImageTypeSpecifiergetRawImageTypeForCompositeLayer()private javax.imageio.ImageTypeSpecifiergetRawImageTypeForLayer(int layerIndex)private javax.imageio.ImageTypeSpecifiergetRawImageTypeInternal(int imageIndex)javax.imageio.metadata.IIOMetadatagetStreamMetadata()Default implementation that always returnsnull.intgetThumbnailHeight(int imageIndex, int thumbnailIndex)private PSDThumbnailgetThumbnailResource(int imageIndex, int thumbnailIndex)private java.util.List<PSDThumbnail>getThumbnailResources(int imageIndex)intgetThumbnailWidth(int imageIndex, int thumbnailIndex)intgetWidth(int imageIndex)static voidmain(java.lang.String[] pArgs)private voidprocessImageProgressForChannel(int channel, int channelCount, int y, int height)java.awt.image.BufferedImageread(int imageIndex, javax.imageio.ImageReadParam param)private voidread16bitChannel(javax.imageio.stream.ImageInputStream stream, int channel, int channelCount, java.awt.image.DataBuffer data, int band, int bandCount, int bandOffset, java.awt.image.ColorModel sourceColorModel, short[] rowData, java.awt.Rectangle sourceRect, java.awt.Rectangle destRect, int xSub, int ySub, int channelWidth, int channelHeight)private voidread1bitChannel(javax.imageio.stream.ImageInputStream stream, int channel, java.awt.image.DataBuffer data, byte[] rowData, java.awt.Rectangle sourceRect, java.awt.Rectangle destRect, int xSub, int ySub, int channelWidth, int channelHeight)private voidread32bitChannel(javax.imageio.stream.ImageInputStream stream, int channel, int channelCount, java.awt.image.DataBuffer data, int band, int bandCount, int bandOffset, java.awt.image.ColorModel sourceColorModel, int[] rowData, java.awt.Rectangle sourceRect, java.awt.Rectangle destRect, int xSub, int ySub, int channelWidth, int channelHeight)private voidread8bitChannel(javax.imageio.stream.ImageInputStream stream, int channel, int channelCount, java.awt.image.DataBuffer data, int band, int bandCount, int bandOffset, java.awt.image.ColorModel sourceColorModel, byte[] rowData, java.awt.Rectangle sourceRect, java.awt.Rectangle destRect, int xSub, int ySub, int channelWidth, int channelHeight)booleanreaderSupportsThumbnails()private voidreadHeader()private voidreadImageData(java.awt.image.BufferedImage destination, java.awt.image.ColorModel pSourceCM, java.awt.Rectangle pSource, java.awt.Rectangle pDest, int pXSub, int pYSub, int[][] byteCounts, int compression)private voidreadImageResources(boolean pParseData)private voidreadLayerAndMaskInfo(boolean parseData)private java.awt.image.BufferedImagereadLayerData(int layerIndex, javax.imageio.ImageReadParam param)private java.util.List<PSDLayerInfo>readLayerInfo(int layerCount)private longreadLength(javax.imageio.stream.ImageInputStream stream)private longreadLength(javax.imageio.stream.ImageInputStream stream, int resId)java.awt.image.BufferedImagereadThumbnail(int imageIndex, int thumbnailIndex)protected voidresetMembers()Resets all member variables.-
Methods inherited from class com.twelvemonkeys.imageio.ImageReaderBase
assertInput, checkBounds, dispose, fakeAOI, fakeSubsampling, getDestination, hasExplicitDestination, reset, setInput, showIt
-
Methods inherited from class javax.imageio.ImageReader
abort, abortRequested, addIIOReadProgressListener, addIIOReadUpdateListener, addIIOReadWarningListener, canReadRaster, checkReadParamBandSettings, clearAbortRequest, computeRegions, getAspectRatio, getAvailableLocales, getDefaultReadParam, getFormatName, getInput, getLocale, getMinIndex, getOriginatingProvider, getSourceRegion, getStreamMetadata, getTileGridXOffset, getTileGridYOffset, getTileHeight, getTileWidth, hasThumbnails, isIgnoringMetadata, isImageTiled, isRandomAccessEasy, isSeekForwardOnly, processImageComplete, processImageProgress, processImageStarted, processImageUpdate, processPassComplete, processPassStarted, processReadAborted, processSequenceComplete, processSequenceStarted, processThumbnailComplete, processThumbnailPassComplete, processThumbnailPassStarted, processThumbnailProgress, processThumbnailStarted, processThumbnailUpdate, processWarningOccurred, processWarningOccurred, read, readAll, readAll, readAsRenderedImage, readRaster, readTile, readTileRaster, removeAllIIOReadProgressListeners, removeAllIIOReadUpdateListeners, removeAllIIOReadWarningListeners, removeIIOReadProgressListener, removeIIOReadUpdateListener, removeIIOReadWarningListener, setInput, setInput, setLocale
-
-
-
-
Field Detail
-
DEBUG
static final boolean DEBUG
-
header
private PSDHeader header
-
colorSpace
private java.awt.color.ICC_ColorSpace colorSpace
-
metadata
private PSDMetadata metadata
-
-
Method Detail
-
resetMembers
protected void resetMembers()
Description copied from class:ImageReaderBaseResets all member variables. This method is by default invoked from:- Specified by:
resetMembersin classImageReaderBase
-
getWidth
public int getWidth(int imageIndex) throws java.io.IOException- Specified by:
getWidthin classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
getHeight
public int getHeight(int imageIndex) throws java.io.IOException- Specified by:
getHeightin classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
getLayerWidth
private int getLayerWidth(int layerIndex) throws java.io.IOException- Throws:
java.io.IOException
-
getLayerHeight
private int getLayerHeight(int layerIndex) throws java.io.IOException- Throws:
java.io.IOException
-
getRawImageType
public javax.imageio.ImageTypeSpecifier getRawImageType(int imageIndex) throws java.io.IOException- Overrides:
getRawImageTypein classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
getRawImageTypeInternal
private javax.imageio.ImageTypeSpecifier getRawImageTypeInternal(int imageIndex) throws java.io.IOException- Throws:
java.io.IOException
-
getRawImageTypeForCompositeLayer
private javax.imageio.ImageTypeSpecifier getRawImageTypeForCompositeLayer() throws java.io.IOException- Throws:
java.io.IOException
-
getImageTypes
public java.util.Iterator<javax.imageio.ImageTypeSpecifier> getImageTypes(int imageIndex) throws java.io.IOException- Specified by:
getImageTypesin classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
getEmbeddedColorSpace
private java.awt.color.ColorSpace getEmbeddedColorSpace() throws java.io.IOException- Throws:
java.io.IOException
-
read
public java.awt.image.BufferedImage read(int imageIndex, javax.imageio.ImageReadParam param) throws java.io.IOException- Specified by:
readin classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
findLayerStartPos
private long findLayerStartPos(int layerIndex)
-
readImageData
private void readImageData(java.awt.image.BufferedImage destination, java.awt.image.ColorModel pSourceCM, java.awt.Rectangle pSource, java.awt.Rectangle pDest, int pXSub, int pYSub, int[][] byteCounts, int compression) throws java.io.IOException- Throws:
java.io.IOException
-
convertToDestinationCS
private void convertToDestinationCS(java.awt.image.ColorModel sourceCM, java.awt.image.ColorModel destinationCM, java.awt.image.WritableRaster raster)
-
createBandList
private int[] createBandList(int numBands)
-
processImageProgressForChannel
private void processImageProgressForChannel(int channel, int channelCount, int y, int height)
-
read32bitChannel
private void read32bitChannel(javax.imageio.stream.ImageInputStream stream, int channel, int channelCount, java.awt.image.DataBuffer data, int band, int bandCount, int bandOffset, java.awt.image.ColorModel sourceColorModel, int[] rowData, java.awt.Rectangle sourceRect, java.awt.Rectangle destRect, int xSub, int ySub, int channelWidth, int channelHeight) throws java.io.IOException- Throws:
java.io.IOException
-
read16bitChannel
private void read16bitChannel(javax.imageio.stream.ImageInputStream stream, int channel, int channelCount, java.awt.image.DataBuffer data, int band, int bandCount, int bandOffset, java.awt.image.ColorModel sourceColorModel, short[] rowData, java.awt.Rectangle sourceRect, java.awt.Rectangle destRect, int xSub, int ySub, int channelWidth, int channelHeight) throws java.io.IOException- Throws:
java.io.IOException
-
read8bitChannel
private void read8bitChannel(javax.imageio.stream.ImageInputStream stream, int channel, int channelCount, java.awt.image.DataBuffer data, int band, int bandCount, int bandOffset, java.awt.image.ColorModel sourceColorModel, byte[] rowData, java.awt.Rectangle sourceRect, java.awt.Rectangle destRect, int xSub, int ySub, int channelWidth, int channelHeight) throws java.io.IOException- Throws:
java.io.IOException
-
read1bitChannel
private void read1bitChannel(javax.imageio.stream.ImageInputStream stream, int channel, java.awt.image.DataBuffer data, byte[] rowData, java.awt.Rectangle sourceRect, java.awt.Rectangle destRect, int xSub, int ySub, int channelWidth, int channelHeight) throws java.io.IOException- Throws:
java.io.IOException
-
decomposeAlpha
private void decomposeAlpha(java.awt.image.ColorModel pModel, java.awt.image.DataBuffer pBuffer, int pWidth, int pHeight, int pChannels)
-
decompose
private static byte decompose(int pColor, double pAlpha)
-
readHeader
private void readHeader() throws java.io.IOException- Throws:
java.io.IOException
-
readImageResources
private void readImageResources(boolean pParseData) throws java.io.IOException- Throws:
java.io.IOException
-
readLayerAndMaskInfo
private void readLayerAndMaskInfo(boolean parseData) throws java.io.IOException- Throws:
java.io.IOException
-
readLength
private long readLength(javax.imageio.stream.ImageInputStream stream) throws java.io.IOException- Throws:
java.io.IOException
-
readLength
private long readLength(javax.imageio.stream.ImageInputStream stream, int resId) throws java.io.IOException- Throws:
java.io.IOException
-
readLayerInfo
private java.util.List<PSDLayerInfo> readLayerInfo(int layerCount) throws java.io.IOException
- Throws:
java.io.IOException
-
readLayerData
private java.awt.image.BufferedImage readLayerData(int layerIndex, javax.imageio.ImageReadParam param) throws java.io.IOException- Throws:
java.io.IOException
-
getRawImageTypeForLayer
private javax.imageio.ImageTypeSpecifier getRawImageTypeForLayer(int layerIndex) throws java.io.IOException- Throws:
java.io.IOException
-
getNumImages
public int getNumImages(boolean allowSearch) throws java.io.IOExceptionDescription copied from class:ImageReaderBaseDefault implementation that always returns1.- Overrides:
getNumImagesin classImageReaderBase- Parameters:
allowSearch- ignored, unless overridden- Returns:
1, unless overridden- Throws:
java.io.IOException- never, unless overridden
-
getStreamMetadata
public javax.imageio.metadata.IIOMetadata getStreamMetadata() throws java.io.IOExceptionDescription copied from class:ImageReaderBaseDefault implementation that always returnsnull.- Overrides:
getStreamMetadatain classImageReaderBase- Returns:
null, unless overridden- Throws:
java.io.IOException- never, unless overridden.
-
getImageMetadata
public javax.imageio.metadata.IIOMetadata getImageMetadata(int imageIndex) throws java.io.IOExceptionDescription copied from class:ImageReaderBaseDefault implementation that always returnsnull.- Overrides:
getImageMetadatain classImageReaderBase- Parameters:
imageIndex- ignored, unless overridden- Returns:
null, unless overridden- Throws:
java.io.IOException- never, unless overridden.
-
getImageMetadata
public javax.imageio.metadata.IIOMetadata getImageMetadata(int imageIndex, java.lang.String formatName, java.util.Set<java.lang.String> nodeNames) throws java.io.IOException- Overrides:
getImageMetadatain classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
readerSupportsThumbnails
public boolean readerSupportsThumbnails()
- Overrides:
readerSupportsThumbnailsin classjavax.imageio.ImageReader
-
getThumbnailResources
private java.util.List<PSDThumbnail> getThumbnailResources(int imageIndex) throws java.io.IOException
- Throws:
java.io.IOException
-
getNumThumbnails
public int getNumThumbnails(int imageIndex) throws java.io.IOException- Overrides:
getNumThumbnailsin classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
getThumbnailResource
private PSDThumbnail getThumbnailResource(int imageIndex, int thumbnailIndex) throws java.io.IOException
- Throws:
java.io.IOException
-
getThumbnailWidth
public int getThumbnailWidth(int imageIndex, int thumbnailIndex) throws java.io.IOException- Overrides:
getThumbnailWidthin classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
getThumbnailHeight
public int getThumbnailHeight(int imageIndex, int thumbnailIndex) throws java.io.IOException- Overrides:
getThumbnailHeightin classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
readThumbnail
public java.awt.image.BufferedImage readThumbnail(int imageIndex, int thumbnailIndex) throws java.io.IOException- Overrides:
readThumbnailin classjavax.imageio.ImageReader- Throws:
java.io.IOException
-
main
public static void main(java.lang.String[] pArgs) throws java.io.IOException- Throws:
java.io.IOException
-
-