2011-06-16 8 views
6

मैंने निम्नलिखित नमूना कोड के साथ एक ग्राफिकल छवि बनाई है।जावा में एक बुफर्ड इमेज को आईएमजी डेटा यूआरआई में परिवर्तित करना संभव है?

BufferedImage bi = new BufferedImage(50,50,BufferedImage.TYPE_BYTE_BINARY); 
Graphics2D g2d = bi.createGraphics(); 

// Draw graphics. 

g2d.dispose(); 
// BufferedImage now has my image I want. 

इस बिंदु पर मेरे पास BufferedImage है जिसे मैं एक आईएमजी डेटा यूआरआई में परिवर्तित करना चाहता हूं। क्या यह संभव है? उदाहरण के लिए ..

<IMG SRC="data:image/png;base64,[BufferedImage data here]"/> 

उत्तर

12

जांची नहीं है, लेकिन कुछ इस तरह यह करना चाहिए:

ByteArrayOutputStream out = new ByteArrayOutputStream(); 
ImageIO.write(bi, "PNG", out); 
byte[] bytes = out.toByteArray(); 

String base64bytes = Base64.encode(bytes); 
String src = "data:image/png;base64," + base64bytes; 

वहाँ lots of different base64 codec implementations for Java हैं। मेरे पास MigBase64 के साथ अच्छे परिणाम हुए हैं।

+0

"बाहर OutputStream" "ByteArrayOutputStream बाहर" है, तो अन्य होना चाहिए कि यह पूरी तरह से काम करता है! धन्यवाद! – Jiyeon

+0

अगर मैं ऐसा करता हूं तो मुझे एक्लिप्स में त्रुटि मिलती है, लेकिन मेरे लिए अन्य काम करता है। एक बार फिर धन्यवाद। – Jiyeon

+2

आउटपुटस्ट्रीम में ByteArray() विधि –

2

आप this solution का उपयोग कर सकते हैं जो किसी बाहरी पुस्तकालय का उपयोग नहीं करता है। छोटा और साफ! यह जावा 6 लाइब्रेरी (DatatypeConverter) का उपयोग करता है। मेरे लिए काम किया!

ByteArrayOutputStream output = new ByteArrayOutputStream(); 
ImageIO.write(image, "png", output); 
DatatypeConverter.printBase64Binary(output.toByteArray()); 
संबंधित मुद्दे