2009-09-17 13 views
15

Potrzebuję utworzyć prostokątny BufferedImage z określonym kolorem tła, narysować wzór na tle i zapisać go do pliku. Nie wiem, jak stworzyć tło.Ustawienie obrazu BufferedImage na kolor w Javie

Używam zagnieżdżonej pętli:

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

Ale to bardzo powolny, gdy obraz jest duża.

Jak ustawić kolor w bardziej efektywny sposób?

Odpowiedz

47

Pobierz obiekt graficzny dla obrazu, ustaw bieżącą farbę na żądany kolor, a następnie zadzwoń pod numer 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

Prawdopodobnie coś jak:

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

Użyj tego:

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

lepiej wyjaśnić więcej szczegółów odpowiedź – Mostafiz

Powiązane problemy