2009-09-17 19 views
15

मुझे एक निर्दिष्ट पृष्ठभूमि रंग के साथ आयताकार BufferedImage बनाने की आवश्यकता है, पृष्ठभूमि पर कुछ पैटर्न बनाएं और इसे फ़ाइल में सहेजें। मुझे नहीं पता कि पृष्ठभूमि कैसे बनाएं।जावा में एक रंग होने के लिए BufferedImage सेट करें

मैं एक नेस्टेड लूप उपयोग कर रहा हूँ:

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

संबंधित मुद्दे