在Java中,是否可以将BufferedImage转换为IMG数据URI?

我用以下示例代码创建了一个图形图像。

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数据URI。 这可能吗? 例如..

  

没有经过测试,但这样的事情应该做到:

 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; 

Java有许多不同的base64编解码器实现 。 我用MigBase64得到了很好的结果。

您可以使用不使用任何外部库的此解决方案 。 简洁干净! 它使用Java 6库( DatatypeConverter )。 为我工作!

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