mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-05 04:25:29 -04:00
JPEG Metadata clean-up
This commit is contained in:
parent
330a0414f0
commit
e6bd94025f
@ -51,6 +51,11 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
class JPEGImage10Metadata extends AbstractMetadata {
|
class JPEGImage10Metadata extends AbstractMetadata {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Native metadata format name
|
||||||
|
*/
|
||||||
|
static final String JAVAX_IMAGEIO_JPEG_IMAGE_1_0 = "javax_imageio_jpeg_image_1.0";
|
||||||
|
|
||||||
// TODO: Create our own native format, which is simply markerSequence from the Sun format, with the segments as-is, in sequence...
|
// TODO: Create our own native format, which is simply markerSequence from the Sun format, with the segments as-is, in sequence...
|
||||||
// + add special case for app segments, containing appXX + identifier (ie. <app0JFIF /> to <app0 identifier="JFIF" /> or <app app="0" identifier="JFIF" />
|
// + add special case for app segments, containing appXX + identifier (ie. <app0JFIF /> to <app0 identifier="JFIF" /> or <app app="0" identifier="JFIF" />
|
||||||
|
|
||||||
@ -66,7 +71,7 @@ class JPEGImage10Metadata extends AbstractMetadata {
|
|||||||
|
|
||||||
// TODO: Consider moving all the metadata stuff from the reader, over here...
|
// TODO: Consider moving all the metadata stuff from the reader, over here...
|
||||||
JPEGImage10Metadata(final List<Segment> segments, Frame frame, JFIF jfif, JFXX jfxx, ICC_Profile embeddedICCProfile, AdobeDCT adobeDCT, final CompoundDirectory exif) {
|
JPEGImage10Metadata(final List<Segment> segments, Frame frame, JFIF jfif, JFXX jfxx, ICC_Profile embeddedICCProfile, AdobeDCT adobeDCT, final CompoundDirectory exif) {
|
||||||
super(true, JPEGImage10MetadataCleaner.JAVAX_IMAGEIO_JPEG_IMAGE_1_0, null, null, null);
|
super(true, JAVAX_IMAGEIO_JPEG_IMAGE_1_0, null, null, null);
|
||||||
|
|
||||||
this.segments = segments;
|
this.segments = segments;
|
||||||
this.frame = frame;
|
this.frame = frame;
|
||||||
@ -79,7 +84,7 @@ class JPEGImage10Metadata extends AbstractMetadata {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Node getNativeTree() {
|
protected Node getNativeTree() {
|
||||||
IIOMetadataNode root = new IIOMetadataNode(JPEGImage10MetadataCleaner.JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
IIOMetadataNode root = new IIOMetadataNode(JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
||||||
|
|
||||||
IIOMetadataNode jpegVariety = new IIOMetadataNode("JPEGvariety");
|
IIOMetadataNode jpegVariety = new IIOMetadataNode("JPEGvariety");
|
||||||
boolean isJFIF = jfif != null;
|
boolean isJFIF = jfif != null;
|
||||||
|
@ -52,11 +52,6 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
final class JPEGImage10MetadataCleaner {
|
final class JPEGImage10MetadataCleaner {
|
||||||
|
|
||||||
/**
|
|
||||||
* Native metadata format name
|
|
||||||
*/
|
|
||||||
static final String JAVAX_IMAGEIO_JPEG_IMAGE_1_0 = "javax_imageio_jpeg_image_1.0";
|
|
||||||
|
|
||||||
private final JPEGImageReader reader;
|
private final JPEGImageReader reader;
|
||||||
|
|
||||||
JPEGImage10MetadataCleaner(final JPEGImageReader reader) {
|
JPEGImage10MetadataCleaner(final JPEGImageReader reader) {
|
||||||
@ -93,7 +88,7 @@ final class JPEGImage10MetadataCleaner {
|
|||||||
the version to the method/constructor used to obtain an IIOMetadata object.)
|
the version to the method/constructor used to obtain an IIOMetadata object.)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
IIOMetadataNode tree = (IIOMetadataNode) imageMetadata.getAsTree(JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
IIOMetadataNode tree = (IIOMetadataNode) imageMetadata.getAsTree(JPEGImage10Metadata.JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
||||||
IIOMetadataNode jpegVariety = (IIOMetadataNode) tree.getElementsByTagName("JPEGvariety").item(0);
|
IIOMetadataNode jpegVariety = (IIOMetadataNode) tree.getElementsByTagName("JPEGvariety").item(0);
|
||||||
IIOMetadataNode markerSequence = (IIOMetadataNode) tree.getElementsByTagName("markerSequence").item(0);
|
IIOMetadataNode markerSequence = (IIOMetadataNode) tree.getElementsByTagName("markerSequence").item(0);
|
||||||
|
|
||||||
@ -145,7 +140,7 @@ final class JPEGImage10MetadataCleaner {
|
|||||||
jfifThumb = new IIOMetadataNode("JFIFthumbJPEG");
|
jfifThumb = new IIOMetadataNode("JFIFthumbJPEG");
|
||||||
// Contains it's own "markerSequence" with full DHT, DQT, SOF etc...
|
// Contains it's own "markerSequence" with full DHT, DQT, SOF etc...
|
||||||
IIOMetadata thumbMeta = thumbnailReader.readMetadata();
|
IIOMetadata thumbMeta = thumbnailReader.readMetadata();
|
||||||
Node thumbTree = thumbMeta.getAsTree(JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
Node thumbTree = thumbMeta.getAsTree(JPEGImage10Metadata.JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
||||||
jfifThumb.appendChild(thumbTree.getLastChild());
|
jfifThumb.appendChild(thumbTree.getLastChild());
|
||||||
app0JFXX.appendChild(jfifThumb);
|
app0JFXX.appendChild(jfifThumb);
|
||||||
break;
|
break;
|
||||||
@ -307,11 +302,11 @@ final class JPEGImage10MetadataCleaner {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
imageMetadata.setFromTree(JAVAX_IMAGEIO_JPEG_IMAGE_1_0, tree);
|
imageMetadata.setFromTree(JPEGImage10Metadata.JAVAX_IMAGEIO_JPEG_IMAGE_1_0, tree);
|
||||||
}
|
}
|
||||||
catch (IIOInvalidTreeException e) {
|
catch (IIOInvalidTreeException e) {
|
||||||
if (JPEGImageReader.DEBUG) {
|
if (JPEGImageReader.DEBUG) {
|
||||||
new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(JAVAX_IMAGEIO_JPEG_IMAGE_1_0), false);
|
new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(imageMetadata.getAsTree(JPEGImage10Metadata.JAVAX_IMAGEIO_JPEG_IMAGE_1_0), false);
|
||||||
System.out.println("-- 8< --");
|
System.out.println("-- 8< --");
|
||||||
new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(tree, false);
|
new XMLSerializer(System.out, System.getProperty("file.encoding")).serialize(tree, false);
|
||||||
}
|
}
|
||||||
|
@ -85,12 +85,12 @@ public class JPEGImage10MetadataCleanerTest {
|
|||||||
reader.setInput(input);
|
reader.setInput(input);
|
||||||
|
|
||||||
IIOMetadata original = origReader.getImageMetadata(0);
|
IIOMetadata original = origReader.getImageMetadata(0);
|
||||||
IIOMetadataNode origTree = (IIOMetadataNode) original.getAsTree(JPEGImage10MetadataCleaner.JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
IIOMetadataNode origTree = (IIOMetadataNode) original.getAsTree(JPEGImage10Metadata.JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
||||||
|
|
||||||
JPEGImage10MetadataCleaner cleaner = new JPEGImage10MetadataCleaner((JPEGImageReader) reader);
|
JPEGImage10MetadataCleaner cleaner = new JPEGImage10MetadataCleaner((JPEGImageReader) reader);
|
||||||
IIOMetadata cleaned = cleaner.cleanMetadata(origReader.getImageMetadata(0));
|
IIOMetadata cleaned = cleaner.cleanMetadata(origReader.getImageMetadata(0));
|
||||||
|
|
||||||
IIOMetadataNode cleanTree = (IIOMetadataNode) cleaned.getAsTree(JPEGImage10MetadataCleaner.JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
IIOMetadataNode cleanTree = (IIOMetadataNode) cleaned.getAsTree(JPEGImage10Metadata.JAVAX_IMAGEIO_JPEG_IMAGE_1_0);
|
||||||
|
|
||||||
NodeList origDHT = origTree.getElementsByTagName("dht");
|
NodeList origDHT = origTree.getElementsByTagName("dht");
|
||||||
assertEquals(1, origDHT.getLength());
|
assertEquals(1, origDHT.getLength());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user