2009-09-17 8 views
15

Мне нужно создать прямоугольник BufferedImage с указанным цветом фона, нарисовать узор на фоне и сохранить его в файл. Я не знаю, как создать фон.Установить BufferedImage как цвет в Java

Я использую вложенный цикл:

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

Но это очень медленно, когда изображение велико.

Как установить цвет более эффективным способом?

ответ

47

Получить графический объект для изображения, установить текущую краску на нужный цвет, затем вызвать 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

Вероятно, что-то вроде:

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

Используйте это:

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

лучше объяснить более детально ответ – Mostafiz