2011-06-16 21 views
6

He creado una imagen gráfica con el siguiente código de muestra.En Java, ¿es posible convertir una Imagen Buffered a un URI de Datos IMG?

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. 

En este punto tengo BufferedImage que quiero convertir en un URI de datos IMG. es posible? Por ejemplo ..

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

Respuesta

12

no han sido evaluados, pero algo como esto debería hacerlo:

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; 

Hay lots of different base64 codec implementations for Java. He tenido buenos resultados con MigBase64.

+0

"OutputStream out" debería ser "ByteArrayOutputStream out", ¡aparte de que funciona perfectamente! ¡Gracias! – Jiyeon

+0

Recibo un error en Eclipse si hago eso, pero el otro funciona para mí. Gracias de nuevo. – Jiyeon

+2

OutputStream no tiene el método toByteArray() –

2

Puede usar this solution que no utiliza ninguna biblioteca externa. Corto y limpio! Utiliza una biblioteca Java 6 (DatatypeConverter). ¡Trabajó para mi!

ByteArrayOutputStream output = new ByteArrayOutputStream(); 
ImageIO.write(image, "png", output); 
DatatypeConverter.printBase64Binary(output.toByteArray()); 
Cuestiones relacionadas