mirror of
https://github.com/haraldk/TwelveMonkeys.git
synced 2025-08-05 12:35:29 -04:00
#520: Fix for incorrect serialization of single element arrays in metadata.
This commit is contained in:
parent
903289caa4
commit
fb304d6c27
@ -144,7 +144,7 @@ public final class TIFFImageMetadata extends AbstractMetadata {
|
||||
IIOMetadataNode valueNode = new IIOMetadataNode("TIFFUndefined");
|
||||
tagNode.appendChild(valueNode);
|
||||
|
||||
if (count == 1) {
|
||||
if (count == 1 && (value == null || !value.getClass().isArray())) {
|
||||
valueNode.setAttribute("value", String.valueOf(value));
|
||||
}
|
||||
else {
|
||||
@ -160,7 +160,7 @@ public final class TIFFImageMetadata extends AbstractMetadata {
|
||||
String typeName = getMetadataType(tag);
|
||||
|
||||
// NOTE: ASCII/Strings have count 1, always. This seems consistent with the JAI ImageIO version.
|
||||
if (count == 1) {
|
||||
if (count == 1 && (value == null || !value.getClass().isArray())) {
|
||||
IIOMetadataNode elementNode = new IIOMetadataNode(typeName);
|
||||
valueNode.appendChild(elementNode);
|
||||
|
||||
@ -915,7 +915,7 @@ public final class TIFFImageMetadata extends AbstractMetadata {
|
||||
|
||||
public void setFromTree(final String formatName, final Node root) throws IIOInvalidTreeException {
|
||||
// Standard validation
|
||||
super.mergeTree(formatName, root);
|
||||
super.setFromTree(formatName, root);
|
||||
|
||||
// Set by "merging" with empty map
|
||||
LinkedHashMap<Integer, Entry> entries = new LinkedHashMap<>();
|
||||
|
@ -1072,6 +1072,45 @@ public class TIFFImageWriterTest extends ImageWriterAbstractTest {
|
||||
assertArrayEquals(new byte[] {'I', 'I', 42, 0}, Arrays.copyOf(bytes, 4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMergeTreeARGB() throws IOException {
|
||||
ImageWriter writer = createImageWriter();
|
||||
ImageWriteParam writeParam = writer.getDefaultWriteParam();
|
||||
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
|
||||
writeParam.setCompressionType("LZW");
|
||||
|
||||
IIOMetadata metadata = writer.getDefaultImageMetadata(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_4BYTE_ABGR), writeParam);
|
||||
|
||||
IIOMetadataNode tiffTree = (IIOMetadataNode) metadata.getAsTree(metadata.getNativeMetadataFormatName());
|
||||
metadata.setFromTree(metadata.getNativeMetadataFormatName(), tiffTree);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMergeTreeGray() throws IOException {
|
||||
ImageWriter writer = createImageWriter();
|
||||
ImageWriteParam writeParam = writer.getDefaultWriteParam();
|
||||
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
|
||||
writeParam.setCompressionType("LZW");
|
||||
|
||||
IIOMetadata metadata = writer.getDefaultImageMetadata(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_BYTE_GRAY), writeParam);
|
||||
|
||||
IIOMetadataNode tiffTree = (IIOMetadataNode) metadata.getAsTree(metadata.getNativeMetadataFormatName());
|
||||
metadata.setFromTree(metadata.getNativeMetadataFormatName(), tiffTree);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMergeTreeBW() throws IOException {
|
||||
ImageWriter writer = createImageWriter();
|
||||
ImageWriteParam writeParam = writer.getDefaultWriteParam();
|
||||
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
|
||||
writeParam.setCompressionType("CCITT T.6");
|
||||
|
||||
IIOMetadata metadata = writer.getDefaultImageMetadata(ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_BYTE_BINARY), writeParam);
|
||||
|
||||
IIOMetadataNode tiffTree = (IIOMetadataNode) metadata.getAsTree(metadata.getNativeMetadataFormatName());
|
||||
metadata.setFromTree(metadata.getNativeMetadataFormatName(), tiffTree);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRewrite() throws IOException {
|
||||
ImageWriter writer = createImageWriter();
|
||||
|
Loading…
x
Reference in New Issue
Block a user