Class PSDImageReader

    • 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 javax.imageio.ImageReader

        availableLocales, ignoreMetadata, input, locale, minIndex, originatingProvider, progressListeners, seekForwardOnly, updateListeners, warningListeners, warningLocales
    • 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 returns null.
      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 returns 1.
      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 returns null.
      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 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
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • DEBUG

        static final boolean DEBUG
      • colorSpace

        private java.awt.color.ICC_ColorSpace colorSpace
    • Constructor Detail

      • PSDImageReader

        PSDImageReader​(javax.imageio.spi.ImageReaderSpi originatingProvider)
    • Method Detail

      • getWidth

        public int getWidth​(int imageIndex)
                     throws java.io.IOException
        Specified by:
        getWidth in class javax.imageio.ImageReader
        Throws:
        java.io.IOException
      • getHeight

        public int getHeight​(int imageIndex)
                      throws java.io.IOException
        Specified by:
        getHeight in class javax.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 class javax.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 class javax.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 class javax.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 returns 1.
        Overrides:
        getNumImages in class ImageReaderBase
        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 returns null.
        Overrides:
        getStreamMetadata in class ImageReaderBase
        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 returns null.
        Overrides:
        getImageMetadata in class ImageReaderBase
        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 class javax.imageio.ImageReader
        Throws:
        java.io.IOException
      • readerSupportsThumbnails

        public boolean readerSupportsThumbnails()
        Overrides:
        readerSupportsThumbnails in class javax.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 class javax.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 class javax.imageio.ImageReader
        Throws:
        java.io.IOException
      • getThumbnailHeight

        public int getThumbnailHeight​(int imageIndex,
                                      int thumbnailIndex)
                               throws java.io.IOException
        Overrides:
        getThumbnailHeight in class javax.imageio.ImageReader
        Throws:
        java.io.IOException
      • readThumbnail

        public java.awt.image.BufferedImage readThumbnail​(int imageIndex,
                                                          int thumbnailIndex)
                                                   throws java.io.IOException
        Overrides:
        readThumbnail in class javax.imageio.ImageReader
        Throws:
        java.io.IOException
      • main

        public static void main​(java.lang.String[] pArgs)
                         throws java.io.IOException
        Throws:
        java.io.IOException