diff --git a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java
index 1e71579e..a9fd04de 100644
--- a/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java
+++ b/imageio/imageio-tiff/src/main/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadata.java
@@ -71,18 +71,18 @@ public final class TIFFImageMetadata extends AbstractMetadata {
/**
* Creates an empty TIFF metadata object.
- *
+ *
* Client code can update or change the metadata using the
* {@link #setFromTree(String, Node)}
* or {@link #mergeTree(String, Node)} methods.
*/
public TIFFImageMetadata() {
- this(new IFD(Collections.emptyList()));
+ this(new IFD(Collections.emptyList()));
}
/**
* Creates a TIFF metadata object, using the values from the given IFD.
- *
+ *
* Client code can update or change the metadata using the
* {@link #setFromTree(String, Node)}
* or {@link #mergeTree(String, Node)} methods.
@@ -95,7 +95,7 @@ public final class TIFFImageMetadata extends AbstractMetadata {
/**
* Creates a TIFF metadata object, using the values from the given entries.
- *
+ *
* Client code can update or change the metadata using the
* {@link #setFromTree(String, Node)}
* or {@link #mergeTree(String, Node)} methods.
@@ -493,10 +493,10 @@ public final class TIFFImageMetadata extends AbstractMetadata {
compressionTypeName.setAttribute("value", "CCITT RLE");
break;
case TIFFExtension.COMPRESSION_CCITT_T4:
- compressionTypeName.setAttribute("value", "CCITT T4");
+ compressionTypeName.setAttribute("value", "CCITT T.4");
break;
case TIFFExtension.COMPRESSION_CCITT_T6:
- compressionTypeName.setAttribute("value", "CCITT T6");
+ compressionTypeName.setAttribute("value", "CCITT T.6");
break;
case TIFFExtension.COMPRESSION_LZW:
compressionTypeName.setAttribute("value", "LZW");
@@ -1038,7 +1038,7 @@ public final class TIFFImageMetadata extends AbstractMetadata {
}
// If we have resolution
- if (xRes != null && yRes != null) {
+ if (xRes != null) { // yRes != null too
// If old unit was DPI, convert values and keep DPI, otherwise use PPCM
Entry resUnitEntry = entries.get(TIFF.TAG_RESOLUTION_UNIT);
int resUnitValue = resUnitEntry != null && resUnitEntry.getValue() != null
diff --git a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java
index e0bbf141..72a9c1ff 100644
--- a/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java
+++ b/imageio/imageio-tiff/src/test/java/com/twelvemonkeys/imageio/plugins/tiff/TIFFImageMetadataTest.java
@@ -188,6 +188,102 @@ public class TIFFImageMetadataTest {
assertEquals("HP IL v1.1", ((Element) textEntry).getAttribute("value"));
}
+ @Test
+ public void testMetadataStandardFormat_CCITT300dpi() throws IOException {
+ IIOMetadata metadata = createMetadata("/tiff/CCITT-G4-300dpi-StripByteCounts0.tif");
+ Node root = metadata.getAsTree(IIOMetadataFormatImpl.standardMetadataFormatName);
+
+ // Root: "javax_imageio_1.0"
+ assertNotNull(root);
+ assertEquals(IIOMetadataFormatImpl.standardMetadataFormatName, root.getNodeName());
+ assertEquals(5, root.getChildNodes().getLength());
+
+ // "Chroma"
+ Node chroma = root.getFirstChild();
+ assertEquals("Chroma", chroma.getNodeName());
+
+ assertEquals(3, chroma.getChildNodes().getLength());
+
+ Node colorSpaceType = chroma.getFirstChild();
+ assertEquals("ColorSpaceType", colorSpaceType.getNodeName());
+ assertEquals("GRAY", ((Element) colorSpaceType).getAttribute("name"));
+
+ Node numChannels = colorSpaceType.getNextSibling();
+ assertEquals("NumChannels", numChannels.getNodeName());
+ assertEquals("1", ((Element) numChannels).getAttribute("value"));
+
+ Node blackIsZero = numChannels.getNextSibling();
+ assertEquals("BlackIsZero", blackIsZero.getNodeName());
+ assertEquals("FALSE", ((Element) blackIsZero).getAttribute("value"));
+
+ // "Compression"
+ Node compression = chroma.getNextSibling();
+ assertEquals("Compression", compression.getNodeName());
+ assertEquals(2, compression.getChildNodes().getLength());
+
+ Node compressionTypeName = compression.getFirstChild();
+ assertEquals("CompressionTypeName", compressionTypeName.getNodeName());
+ assertEquals("CCITT T.6", ((Element) compressionTypeName).getAttribute("value"));
+
+ Node lossless = compressionTypeName.getNextSibling();
+ assertEquals("Lossless", lossless.getNodeName());
+ assertEquals(0, lossless.getAttributes().getLength());
+
+ // "Data"
+ Node data = compression.getNextSibling();
+ assertEquals("Data", data.getNodeName());
+ assertEquals(4, data.getChildNodes().getLength());
+
+ Node planarConfiguration = data.getFirstChild();
+ assertEquals("PlanarConfiguration", planarConfiguration.getNodeName());
+ assertEquals("PixelInterleaved", ((Element) planarConfiguration).getAttribute("value"));
+
+ Node sampleFormat = planarConfiguration.getNextSibling();
+ assertEquals("SampleFormat", sampleFormat.getNodeName());
+ assertEquals("UnsignedIntegral", ((Element) sampleFormat).getAttribute("value"));
+
+ Node bitsPerSample = sampleFormat.getNextSibling();
+ assertEquals("BitsPerSample", bitsPerSample.getNodeName());
+ assertEquals("1", ((Element) bitsPerSample).getAttribute("value"));
+
+ Node sampleMSB = bitsPerSample.getNextSibling();
+ assertEquals("SampleMSB", sampleMSB.getNodeName());
+ assertEquals("0", ((Element) sampleMSB).getAttribute("value"));
+
+ // "Dimension"
+ Node dimension = data.getNextSibling();
+ assertEquals("Dimension", dimension.getNodeName());
+ assertEquals(4, dimension.getChildNodes().getLength());
+
+ Node pixelAspectRatio = dimension.getFirstChild();
+ assertEquals("PixelAspectRatio", pixelAspectRatio.getNodeName());
+ assertEquals("1.0", ((Element) pixelAspectRatio).getAttribute("value"));
+
+ Node imageOrientation = pixelAspectRatio.getNextSibling();
+ assertEquals("ImageOrientation", imageOrientation.getNodeName());
+ assertEquals("Normal", ((Element) imageOrientation).getAttribute("value"));
+
+ Node horizontalPixelSize = imageOrientation.getNextSibling();
+ assertEquals("HorizontalPixelSize", horizontalPixelSize.getNodeName());
+ assertEquals("0.08466666666666667", ((Element) horizontalPixelSize).getAttribute("value"));
+
+ Node verticalPixelSize = horizontalPixelSize.getNextSibling();
+ assertEquals("VerticalPixelSize", verticalPixelSize.getNodeName());
+ assertEquals("0.08466666666666667", ((Element) verticalPixelSize).getAttribute("value"));
+
+ // "Document"
+ Node document = dimension.getNextSibling();
+ assertEquals("Document", document.getNodeName());
+ assertEquals(1, document.getChildNodes().getLength());
+
+ Node formatVersion = document.getFirstChild();
+ assertEquals("FormatVersion", formatVersion.getNodeName());
+ assertEquals("6.0", ((Element) formatVersion).getAttribute("value"));
+
+ // No more elements
+ assertNull(document.getNextSibling());
+ }
+
@Test
public void testMetadataNativeFormat() throws IOException {
IIOMetadata metadata = createMetadata("/tiff/quad-lzw.tif");