Set BufferedImage to be a color in Java

Viewed 49282

I need to create a rectangular BufferedImage with a specified background color, draw some pattern on the background and save it to file. I don't know how to create the background.

I am using a nested loop:

BufferedImage b_img = ...
for every row
for every column
setRGB(r,g,b);

But it's very slow when the image is large.

How to set the color in a more efficient way?

5 Answers

For who want also to save the created image to a file, I have used previous answers and added the file saving part:

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

// Create the image
BufferedImage bi = new BufferedImage(80, 40, ColorSpace.TYPE_RGB);
Graphics2D graphics = bi.createGraphics();

// Fill the background with gray color
Color rgb = new Color(50, 50, 50);
graphics.setColor (rgb);
graphics.fillRect ( 0, 0, bi.getWidth(), bi.getHeight());

// Save the file in PNG format
File outFile = new File("output.png");
ImageIO.write(bi, "png", outFile);

You can also save the image in other formats like bmp, jpg, etc...

Related