1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| BufferedImage bytegrayToRgb(BufferedImage input) {
// Workaround bug ID: 5051418
if(input.getType() == BufferedImage.TYPE_BYTE_GRAY) {
// convert to TYPE_BYTE_INDEXED to have the correct values
byte cmap[] = new byte[256];
for (int i = 0; i < 256; i++) cmap[i] = (byte)i;
IndexColorModel gray = new IndexColorModel(8, cmap.length, cmap, cmap, cmap);
BufferedImage bg = new BufferedImage(input.getWidth(), input.getHeight(), BufferedImage.TYPE_BYTE_INDEXED, gray);
Graphics2D g2d = bg.createGraphics();
g2d.drawImage(input, AffineTransform.getTranslateInstance(0, 0), null);
input.flush();
g2d.dispose();
// then convert to TYPE_RGB
BufferedImage out = new BufferedImage(input.getWidth(), input.getHeight(), ColorSpace.TYPE_RGB);
g2d = out.createGraphics();
g2d.drawImage(bg, 0, 0, null);
bg.flush();
g2d.dispose();
return out;
}
return input;
} |
Partager