TMI-META: Now reads ICC profile from PSD Image Resource Blocks in JPEG.

This commit is contained in:
Harald Kuhr 2014-09-26 16:43:14 +02:00
parent 7634ca1261
commit 61cbeb0a09
2 changed files with 12 additions and 0 deletions

View File

@ -29,7 +29,9 @@
package com.twelvemonkeys.imageio.metadata.jpeg; package com.twelvemonkeys.imageio.metadata.jpeg;
import com.twelvemonkeys.imageio.metadata.Directory; import com.twelvemonkeys.imageio.metadata.Directory;
import com.twelvemonkeys.imageio.metadata.Entry;
import com.twelvemonkeys.imageio.metadata.exif.EXIFReader; import com.twelvemonkeys.imageio.metadata.exif.EXIFReader;
import com.twelvemonkeys.imageio.metadata.psd.PSD;
import com.twelvemonkeys.imageio.metadata.psd.PSDReader; import com.twelvemonkeys.imageio.metadata.psd.PSDReader;
import com.twelvemonkeys.imageio.metadata.xmp.XMP; import com.twelvemonkeys.imageio.metadata.xmp.XMP;
import com.twelvemonkeys.imageio.metadata.xmp.XMPReader; import com.twelvemonkeys.imageio.metadata.xmp.XMPReader;
@ -38,6 +40,8 @@ import com.twelvemonkeys.imageio.stream.ByteArrayImageInputStream;
import javax.imageio.IIOException; import javax.imageio.IIOException;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream; import javax.imageio.stream.ImageInputStream;
import java.awt.color.ICC_ColorSpace;
import java.awt.color.ICC_Profile;
import java.io.*; import java.io.*;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.*; import java.util.*;
@ -290,6 +294,11 @@ public final class JPEGSegmentUtil {
// IPTC metadata. Probably duplicated in the XMP though... // IPTC metadata. Probably duplicated in the XMP though...
ImageInputStream stream = new ByteArrayImageInputStream(segment.data, segment.offset(), segment.length()); ImageInputStream stream = new ByteArrayImageInputStream(segment.data, segment.offset(), segment.length());
Directory psd = new PSDReader().read(stream); Directory psd = new PSDReader().read(stream);
Entry iccEntry = psd.getEntryById(PSD.RES_ICC_PROFILE);
if (iccEntry != null) {
ICC_ColorSpace colorSpace = new ICC_ColorSpace(ICC_Profile.getInstance((byte[]) iccEntry.getValue()));
System.err.println("colorSpace: " + colorSpace);
}
System.err.println("PSD: " + psd); System.err.println("PSD: " + psd);
System.err.println(EXIFReader.HexDump.dump(segment.data)); System.err.println(EXIFReader.HexDump.dump(segment.data));
} }

View File

@ -41,4 +41,7 @@ public interface PSD {
/** IPTC image resource id. */ /** IPTC image resource id. */
int RES_IPTC_NAA = 0x0404; int RES_IPTC_NAA = 0x0404;
/** ICC profile image resource id. */
int RES_ICC_PROFILE = 0x040f;
} }