2009-09-17 19 views
15

Necesito crear un BufferedImage rectangular con un color de fondo especificado, dibujar un patrón en el fondo y guardarlo en el archivo. No sé cómo crear el fondo.Establecer BufferedImage para que sea un color en Java

estoy usando un bucle anidado:

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

pero es muy lento cuando la imagen es grande.

¿Cómo establecer el color de una manera más eficiente?

Respuesta

47

Obtenga el objeto de gráficos para la imagen, configure la pintura actual con el color deseado y luego llame al 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()); 
6

Probablemente algo como:

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

Utilice esta:

BufferedImage bi = new BufferedImage(width, height, 
       BufferedImage.TYPE_INT_ARGB); 
Graphics2D ig2 = bi.createGraphics(); 

ig2.setBackground(Color.WHITE); 
ig2.clearRect(0, 0, width, height); 
3
BufferedImage image = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB); 
int[]data=((DataBufferInt) image.getRaster().getDataBuffer()).getData(); 
Arrays.fill(data,color.getRGB()); 
+0

mejor para explicar con más detalle de la respuesta – Mostafiz

Cuestiones relacionadas