From c2935162013dbca9e27cbd5262acb803a0d04480 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Tue, 17 Nov 2020 22:40:23 +0100 Subject: [PATCH] #330 Now correctly uses USHORT instead of SHORT for 16 bit DIB. (cherry picked from commit 7a24d55be7e1d7ce879a0e6e5e956bfedacd5598) --- .../com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java index ed6c1542..864e6f81 100644 --- a/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java +++ b/imageio/imageio-bmp/src/main/java/com/twelvemonkeys/imageio/plugins/bmp/DIBImageReader.java @@ -465,13 +465,12 @@ abstract class DIBImageReader extends ImageReaderBase { } private void readBitmap16(final BitmapDescriptor pBitmap) throws IOException { - // TODO: No idea if this actually works.. short[] pixels = new short[pBitmap.getWidth() * pBitmap.getHeight()]; // TODO: Support TYPE_USHORT_565 and the RGB 444/ARGB 4444 layouts // Will create TYPE_USHORT_555 DirectColorModel cm = new DirectColorModel(16, 0x7C00, 0x03E0, 0x001F); - DataBuffer buffer = new DataBufferShort(pixels, pixels.length); + DataBuffer buffer = new DataBufferUShort(pixels, pixels.length); WritableRaster raster = Raster.createPackedRaster( buffer, pBitmap.getWidth(), pBitmap.getHeight(), pBitmap.getWidth(), cm.getMasks(), null );