user364902
user364902

Reputation: 3334

Add color to a grayscale BufferedImage

Can't find an answer to this, maybe its too basic. I have a gray scale BufferedImage (basically a section from a black-and-white PDF), and I'd like to draw a red box on the image. However, when I do so and save the image, the red box comes out as grey.

How to correctly add color to a gray scale BufferedImage?

I suppose I need to convert the color model(?) from gray scale to RGB? Although I don't need to convert the black and white parts of the image to color - that is to say the resulting image can be black and white. So long as I can draw a red line on the image without it saving as a shade of gray.

The image file is a GIF.

Upvotes: 3

Views: 833

Answers (1)

Hirak
Hirak

Reputation: 3649

By using the following code, I could add RED rectangle to a grayscale image. See if this works for you. Else let us know what error you faced.

public static void main(String[] args) throws IOException {
BufferedImage old = ImageIO.read(new File("download.gif"));
int w = old.getWidth();
int h = old.getHeight();

BufferedImage img = new BufferedImage(
        w, h, BufferedImage.TYPE_INT_ARGB);

Graphics2D g2d = img.createGraphics();
g2d.drawImage(old, 0, 0, null);
g2d.setColor(Color.red);
g2d.drawRect(10, 10, 100, 100);
g2d.dispose();

    ImageIO.write(img, "gif", new File("out.gif"));  

    }

Upvotes: 3

Related Questions