TMI-JPEG: Regression fix for NPE in metadata if delegate returns null metadata.

This commit is contained in:
Harald Kuhr 2013-09-28 12:32:01 +02:00
parent 1acc04eeaf
commit c8061eb0c4

View File

@ -1006,9 +1006,10 @@ public class JPEGImageReader extends ImageReaderBase {
public IIOMetadata getImageMetadata(int imageIndex) throws IOException { public IIOMetadata getImageMetadata(int imageIndex) throws IOException {
IIOMetadata metadata = delegate.getImageMetadata(imageIndex); IIOMetadata metadata = delegate.getImageMetadata(imageIndex);
String format = metadata.getNativeMetadataFormatName(); if (metadata != null) {
IIOMetadataNode tree = (IIOMetadataNode) metadata.getAsTree(format); String format = metadata.getNativeMetadataFormatName();
Node jpegVariety = tree.getElementsByTagName("JPEGvariety").item(0); IIOMetadataNode tree = (IIOMetadataNode) metadata.getAsTree(format);
Node jpegVariety = tree.getElementsByTagName("JPEGvariety").item(0);
// TODO: Allow EXIF (as app1EXIF) in the JPEGvariety (sic) node. // TODO: Allow EXIF (as app1EXIF) in the JPEGvariety (sic) node.
// As EXIF is (a subset of) TIFF, (and the EXIF data is a valid TIFF stream) probably use something like: // As EXIF is (a subset of) TIFF, (and the EXIF data is a valid TIFF stream) probably use something like:
@ -1030,16 +1031,17 @@ public class JPEGImageReader extends ImageReaderBase {
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 app2ICC = new IIOMetadataNode("app2ICC"); IIOMetadataNode app2ICC = new IIOMetadataNode("app2ICC");
app2ICC.setUserObject(getEmbeddedICCProfile(true)); app2ICC.setUserObject(getEmbeddedICCProfile(true));
Node jpegVarietyFirstChild = jpegVariety.getFirstChild(); Node jpegVarietyFirstChild = jpegVariety.getFirstChild();
if (jpegVarietyFirstChild != null) { if (jpegVarietyFirstChild != null) {
jpegVarietyFirstChild.appendChild(app2ICC); jpegVarietyFirstChild.appendChild(app2ICC);
} }
// new XMLSerializer(System.err, System.getProperty("file.encoding")).serialize(tree, false); // new XMLSerializer(System.err, System.getProperty("file.encoding")).serialize(tree, false);
metadata.mergeTree(format, tree); metadata.mergeTree(format, tree);
}
return metadata; return metadata;
} }