将BufferedImage设置为Java中的颜色

将BufferedImage设置为Java中的颜色

问题描述:

我需要用指定的背景颜色创建一个长方形BufferedImage,在背景上绘制一些图案并将其保存到文件中。我不知道如何创建背景。将BufferedImage设置为Java中的颜色

我使用嵌套的循环:

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

但它的速度很慢,当图像较大。

如何以更有效的方式设置颜色?

获取图像的图形对象,将当前颜料设置为所需颜色,然后致电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()); 

大概是这样的:

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

使用此:

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

ig2.setBackground(Color.WHITE); 
ig2.clearRect(0, 0, width, height); 

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

更好的解释回答的更多细节 – Mostafiz 2016-04-29 00:14:22