views:

547

answers:

2

I need to create a rectangular BufferedImage with specified color as a background, draw some pattern on the background and save it to file. My problem comes from how to create the background,I am using nexted 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?

+2  A: 

Get the graphics object for the image, set the current paint to the desired colour, then call fillRect(0,0,width,height).

BufferedImage b_img = ...
Graphics2D    graphics = b_img.createGraphics();

graphics.setPaint ( new Color ( r, g, b ) );
graphics.fillRect ( 0, 0, b_img.getWidth(), b_img.getHeight() );
Pete Kirkham
+1  A: 

Probably something like:

BufferedImage image = new BufferedImage(...);
Graphics2D g2d = image.createGraphics();
g2d.setColor(...);
g2d.fillRect(...);
camickr