2009-09-17 15 views
15

Belirli bir arka plan rengiyle dikdörtgen bir BufferedImage oluşturmak, arka plan üzerinde bir desen çizmek ve dosyaya kaydetmek zorundayım. Arka planı nasıl oluşturacağımı bilmiyorum.Java'da bir renk olması için BufferedImage'ı ayarlama

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

Ama görüntü büyük olduğunda çok yavaş:

ben iç içe bir döngü kullanıyorum.

Renk nasıl daha etkili bir şekilde ayarlanır?

cevap

47

Görüntünün grafik nesnesini alın, mevcut boyayı istediğiniz renge ayarlayın, ardından fillRect(0,0,width,height) numaralı telefonu arayın.

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

Muhtemelen gibi bir şey:

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

bunu kullanın:

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

daha iyi cevap daha ayrıntılı açıklamak için – Mostafiz

İlgili konular