diff --git a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java index 17f82958..596c99eb 100755 --- a/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java +++ b/imageio/imageio-tga/src/main/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReader.java @@ -116,7 +116,13 @@ final class TGAImageReader extends ImageReaderBase { return ImageTypeSpecifiers.createFromIndexColorModel(header.getColorMap()); case TGA.IMAGETYPE_MONOCHROME: case TGA.IMAGETYPE_MONOCHROME_RLE: - return ImageTypeSpecifiers.createGrayscale(8, DataBuffer.TYPE_BYTE); + switch (header.getPixelDepth()) { + case 8: + return ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_BYTE_GRAY); + case 16: + return ImageTypeSpecifiers.createFromBufferedImageType(BufferedImage.TYPE_USHORT_GRAY); + default: throw new IIOException("Unknown pixel depth for monochrome: " + header.getPixelDepth()); + } case TGA.IMAGETYPE_TRUECOLOR: case TGA.IMAGETYPE_TRUECOLOR_RLE: ColorSpace sRGB = ColorSpace.getInstance(ColorSpace.CS_sRGB); diff --git a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java index 0b3d1f71..14a94df9 100755 --- a/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java +++ b/imageio/imageio-tga/src/test/java/com/twelvemonkeys/imageio/plugins/tga/TGAImageReaderTest.java @@ -91,7 +91,10 @@ public class TGAImageReaderTest extends ImageReaderAbstractTest new TestData(getClassLoaderResource("/tga/XING_T24.TGA"), new Dimension(240, 164)), // Uncompressed 24 bit BGR top/down new TestData(getClassLoaderResource("/tga/XING_T32.TGA"), new Dimension(240, 164)), // Uncompressed 32 bit BGRA top/down - new TestData(getClassLoaderResource("/tga/autodesk-3dsmax-extsize494.tga"), new Dimension(440, 200)) // RLE compressed 32 bit BGRA bottom/up + new TestData(getClassLoaderResource("/tga/autodesk-3dsmax-extsize494.tga"), new Dimension(440, 200)), // RLE compressed 32 bit BGRA bottom/up + + new TestData(getClassLoaderResource("/tga/monochrome16_top_left.tga"), new Dimension(64, 64)), // Uncompressed 16 bit monochrome + new TestData(getClassLoaderResource("/tga/monochrome16_top_left_rle.tga"), new Dimension(64, 64)) // RLE compressed 16 bit monochrome ); } diff --git a/imageio/imageio-tga/src/test/resources/tga/monochrome16_top_left.tga b/imageio/imageio-tga/src/test/resources/tga/monochrome16_top_left.tga new file mode 100644 index 00000000..af30bc5a Binary files /dev/null and b/imageio/imageio-tga/src/test/resources/tga/monochrome16_top_left.tga differ diff --git a/imageio/imageio-tga/src/test/resources/tga/monochrome16_top_left_rle.tga b/imageio/imageio-tga/src/test/resources/tga/monochrome16_top_left_rle.tga new file mode 100644 index 00000000..e686c9a5 Binary files /dev/null and b/imageio/imageio-tga/src/test/resources/tga/monochrome16_top_left_rle.tga differ