Search in sources :

Example 1 with PsdHeaderDirectory

use of com.drew.metadata.photoshop.PsdHeaderDirectory in project UniversalMediaServer by UniversalMediaServer.

the class PSDInfo method parseMetadata.

@SuppressFBWarnings("SF_SWITCH_NO_DEFAULT")
@Override
protected void parseMetadata(Metadata metadata) {
    if (metadata == null) {
        return;
    }
    for (Directory directory : metadata.getDirectories()) {
        if (directory instanceof PsdHeaderDirectory) {
            parsedInfo.format = ImageFormat.PSD;
            if (((PsdHeaderDirectory) directory).containsTag(PsdHeaderDirectory.TAG_IMAGE_WIDTH) && ((PsdHeaderDirectory) directory).containsTag(PsdHeaderDirectory.TAG_IMAGE_HEIGHT)) {
                parsedInfo.width = ((PsdHeaderDirectory) directory).getInteger(PsdHeaderDirectory.TAG_IMAGE_WIDTH);
                parsedInfo.height = ((PsdHeaderDirectory) directory).getInteger(PsdHeaderDirectory.TAG_IMAGE_HEIGHT);
            }
            if (((PsdHeaderDirectory) directory).containsTag(PsdHeaderDirectory.TAG_BITS_PER_CHANNEL)) {
                Integer i = ((PsdHeaderDirectory) directory).getInteger(PsdHeaderDirectory.TAG_BITS_PER_CHANNEL);
                if (i != null) {
                    parsedInfo.bitDepth = i;
                }
            }
            if (((PsdHeaderDirectory) directory).containsTag(PsdHeaderDirectory.TAG_COLOR_MODE)) {
                Integer i = ((PsdHeaderDirectory) directory).getInteger(PsdHeaderDirectory.TAG_COLOR_MODE);
                if (i != null) {
                    ((PSDParseInfo) parsedInfo).colorMode = ColorMode.typeOf(i.intValue());
                    /*
					     * Bitmap = 0; Grayscale = 1; Indexed = 2; RGB = 3; CMYK = 4; Multichannel = 7; Duotone = 8; Lab = 9.
						 */
                    switch(((PSDParseInfo) parsedInfo).colorMode) {
                        case GRAYSCALE:
                            parsedInfo.numComponents = 1;
                            parsedInfo.colorSpaceType = ColorSpaceType.TYPE_GRAY;
                            break;
                        case INDEXED:
                        case RGB:
                            parsedInfo.numComponents = 3;
                            parsedInfo.colorSpaceType = ColorSpaceType.TYPE_RGB;
                            break;
                        case CMYK:
                            parsedInfo.numComponents = 4;
                            parsedInfo.colorSpaceType = ColorSpaceType.TYPE_CMYK;
                            break;
                        case LAB:
                            parsedInfo.numComponents = 3;
                            parsedInfo.colorSpaceType = ColorSpaceType.TYPE_Lab;
                        default:
                    }
                }
            }
            if (((PsdHeaderDirectory) directory).containsTag(PsdHeaderDirectory.TAG_CHANNEL_COUNT)) {
                Integer i = ((PsdHeaderDirectory) directory).getInteger(PsdHeaderDirectory.TAG_CHANNEL_COUNT);
                if (i != null) {
                    ((PSDParseInfo) parsedInfo).channelCount = i;
                }
            }
        }
    }
}
Also used : PsdHeaderDirectory(com.drew.metadata.photoshop.PsdHeaderDirectory) Directory(com.drew.metadata.Directory) PsdHeaderDirectory(com.drew.metadata.photoshop.PsdHeaderDirectory) SuppressFBWarnings(edu.umd.cs.findbugs.annotations.SuppressFBWarnings)

Aggregations

Directory (com.drew.metadata.Directory)1 PsdHeaderDirectory (com.drew.metadata.photoshop.PsdHeaderDirectory)1 SuppressFBWarnings (edu.umd.cs.findbugs.annotations.SuppressFBWarnings)1