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_ColorSpace
colorSpace
(package private) static boolean
DEBUG
private PSDHeader
header
private PSDMetadata
metadata
-
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 void
convertToDestinationCS(java.awt.image.ColorModel sourceCM, java.awt.image.ColorModel destinationCM, java.awt.image.WritableRaster raster)
private int[]
createBandList(int numBands)
private static byte
decompose(int pColor, double pAlpha)
private void
decomposeAlpha(java.awt.image.ColorModel pModel, java.awt.image.DataBuffer pBuffer, int pWidth, int pHeight, int pChannels)
private long
findLayerStartPos(int layerIndex)
private java.awt.color.ColorSpace
getEmbeddedColorSpace()
int
getHeight(int imageIndex)
javax.imageio.metadata.IIOMetadata
getImageMetadata(int imageIndex)
Default implementation that always returnsnull
.javax.imageio.metadata.IIOMetadata
getImageMetadata(int imageIndex, java.lang.String formatName, java.util.Set<java.lang.String> nodeNames)
java.util.Iterator<javax.imageio.ImageTypeSpecifier>
getImageTypes(int imageIndex)
private int
getLayerHeight(int layerIndex)
private int
getLayerWidth(int layerIndex)
int
getNumImages(boolean allowSearch)
Default implementation that always returns1
.int
getNumThumbnails(int imageIndex)
javax.imageio.ImageTypeSpecifier
getRawImageType(int imageIndex)
private javax.imageio.ImageTypeSpecifier
getRawImageTypeForCompositeLayer()
private javax.imageio.ImageTypeSpecifier
getRawImageTypeForLayer(int layerIndex)
private javax.imageio.ImageTypeSpecifier
getRawImageTypeInternal(int imageIndex)
javax.imageio.metadata.IIOMetadata
getStreamMetadata()
Default implementation that always returnsnull
.int
getThumbnailHeight(int imageIndex, int thumbnailIndex)
private PSDThumbnail
getThumbnailResource(int imageIndex, int thumbnailIndex)
private java.util.List<PSDThumbnail>
getThumbnailResources(int imageIndex)
int
getThumbnailWidth(int imageIndex, int thumbnailIndex)
int
getWidth(int imageIndex)
static void
main(java.lang.String[] pArgs)
private void
processImageProgressForChannel(int channel, int channelCount, int y, int height)
java.awt.image.BufferedImage
read(int imageIndex, javax.imageio.ImageReadParam param)
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)
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)
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)
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)
boolean
readerSupportsThumbnails()
private void
readHeader()
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)
private void
readImageResources(boolean pParseData)
private void
readLayerAndMaskInfo(boolean parseData)
private java.awt.image.BufferedImage
readLayerData(int layerIndex, javax.imageio.ImageReadParam param)
private java.util.List<PSDLayerInfo>
readLayerInfo(int layerCount)
private long
readLength(javax.imageio.stream.ImageInputStream stream)
private long
readLength(javax.imageio.stream.ImageInputStream stream, int resId)
java.awt.image.BufferedImage
readThumbnail(int imageIndex, int thumbnailIndex)
protected void
resetMembers()
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:ImageReaderBase
Resets all member variables. This method is by default invoked from:- Specified by:
resetMembers
in classImageReaderBase
-
getWidth
public int getWidth(int imageIndex) throws java.io.IOException
- Specified by:
getWidth
in classjavax.imageio.ImageReader
- Throws:
java.io.IOException
-
getHeight
public int getHeight(int imageIndex) throws java.io.IOException
- Specified by:
getHeight
in 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:
getRawImageType
in 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:
getImageTypes
in 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:
read
in 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.IOException
Description copied from class:ImageReaderBase
Default implementation that always returns1
.- Overrides:
getNumImages
in 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.IOException
Description copied from class:ImageReaderBase
Default implementation that always returnsnull
.- Overrides:
getStreamMetadata
in classImageReaderBase
- Returns:
null
, unless overridden- Throws:
java.io.IOException
- never, unless overridden.
-
getImageMetadata
public javax.imageio.metadata.IIOMetadata getImageMetadata(int imageIndex) throws java.io.IOException
Description copied from class:ImageReaderBase
Default implementation that always returnsnull
.- Overrides:
getImageMetadata
in 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:
getImageMetadata
in classjavax.imageio.ImageReader
- Throws:
java.io.IOException
-
readerSupportsThumbnails
public boolean readerSupportsThumbnails()
- Overrides:
readerSupportsThumbnails
in 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:
getNumThumbnails
in 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:
getThumbnailWidth
in classjavax.imageio.ImageReader
- Throws:
java.io.IOException
-
getThumbnailHeight
public int getThumbnailHeight(int imageIndex, int thumbnailIndex) throws java.io.IOException
- Overrides:
getThumbnailHeight
in classjavax.imageio.ImageReader
- Throws:
java.io.IOException
-
readThumbnail
public java.awt.image.BufferedImage readThumbnail(int imageIndex, int thumbnailIndex) throws java.io.IOException
- Overrides:
readThumbnail
in classjavax.imageio.ImageReader
- Throws:
java.io.IOException
-
main
public static void main(java.lang.String[] pArgs) throws java.io.IOException
- Throws:
java.io.IOException
-
-