diff --git a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java index cd5a40d0..c572010c 100644 --- a/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java +++ b/imageio/imageio-core/src/main/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiers.java @@ -112,6 +112,9 @@ public final class ImageTypeSpecifiers { // As the ComponentColorModel is broken for 32 bit unsigned int, we'll use our own version return UInt32ImageTypeSpecifier.createInterleaved(ColorSpace.getInstance(ColorSpace.CS_GRAY), new int[] {0}, false, false); } + else if (dataType == DataBuffer.TYPE_FLOAT || dataType == DataBuffer.TYPE_DOUBLE) { + return ImageTypeSpecifier.createInterleaved(ColorSpace.getInstance(ColorSpace.CS_GRAY), new int[] {0}, dataType, false, false); + } // NOTE: The isSigned boolean is stored but *not used for anything* in the Grayscale ImageTypeSpecifier... return ImageTypeSpecifier.createGrayscale(bits, dataType, false); @@ -126,6 +129,9 @@ public final class ImageTypeSpecifiers { // As the ComponentColorModel is broken for 32 bit unsigned int, we'll use our own version return UInt32ImageTypeSpecifier.createInterleaved(ColorSpace.getInstance(ColorSpace.CS_GRAY), new int[] {0, 1}, true, isAlphaPremultiplied); } + else if (dataType == DataBuffer.TYPE_FLOAT || dataType == DataBuffer.TYPE_DOUBLE) { + return ImageTypeSpecifier.createInterleaved(ColorSpace.getInstance(ColorSpace.CS_GRAY), new int[] {0, 1}, dataType, true, isAlphaPremultiplied); + } // NOTE: The isSigned boolean is stored but *not used for anything* in the Grayscale ImageTypeSpecifier... return ImageTypeSpecifier.createGrayscale(bits, dataType, false, isAlphaPremultiplied); diff --git a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiersTest.java b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiersTest.java index 072f6390..65f9a083 100644 --- a/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiersTest.java +++ b/imageio/imageio-core/src/test/java/com/twelvemonkeys/imageio/util/ImageTypeSpecifiersTest.java @@ -386,9 +386,21 @@ public class ImageTypeSpecifiersTest { UInt32ImageTypeSpecifier.createInterleaved(GRAY, new int[] {0}, false, false), ImageTypeSpecifiers.createGrayscale(32, DataBuffer.TYPE_INT) ); + } + + @Test + public void testCreateGrayscaleFloat() { assertEquals( - UInt32ImageTypeSpecifier.createInterleaved(GRAY, new int[] {0}, false, false), - ImageTypeSpecifiers.createGrayscale(32, DataBuffer.TYPE_INT) + ImageTypeSpecifier.createInterleaved(GRAY, new int[] {0}, DataBuffer.TYPE_FLOAT, false, false), + ImageTypeSpecifiers.createGrayscale(32, DataBuffer.TYPE_FLOAT) + ); + } + + @Test + public void testCreateGrayscaleDouble() { + assertEquals( + ImageTypeSpecifier.createInterleaved(GRAY, new int[] {0}, DataBuffer.TYPE_DOUBLE, false, false), + ImageTypeSpecifiers.createGrayscale(64, DataBuffer.TYPE_DOUBLE) ); } @@ -463,6 +475,30 @@ public class ImageTypeSpecifiersTest { ); } + @Test + public void testCreateGrayscaleAlphaFloat() { + assertEquals( + ImageTypeSpecifier.createInterleaved(GRAY, new int[] {0, 1}, DataBuffer.TYPE_FLOAT, true, false), + ImageTypeSpecifiers.createGrayscale(32, DataBuffer.TYPE_FLOAT, false) + ); + assertEquals( + ImageTypeSpecifier.createInterleaved(GRAY, new int[] {0, 1}, DataBuffer.TYPE_FLOAT, true, true), + ImageTypeSpecifiers.createGrayscale(32, DataBuffer.TYPE_FLOAT, true) + ); + } + + @Test + public void testCreateGrayscaleAlphaDouble() { + assertEquals( + ImageTypeSpecifier.createInterleaved(GRAY, new int[] {0, 1}, DataBuffer.TYPE_DOUBLE, true, false), + ImageTypeSpecifiers.createGrayscale(64, DataBuffer.TYPE_DOUBLE, false) + ); + assertEquals( + ImageTypeSpecifier.createInterleaved(GRAY, new int[] {0, 1}, DataBuffer.TYPE_DOUBLE, true, true), + ImageTypeSpecifiers.createGrayscale(64, DataBuffer.TYPE_DOUBLE, true) + ); + } + @Test public void testCreatePackedGrayscale1() { assertEquals(