在Java中将DataURL图像转换为图像文件

6
我在Java Servlet中收到了图像DataURL,它看起来像这样:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...

我需要将它保存为图像文件,该怎么做?

通常,提供一些你已经尝试过的代码会得到更好的回应。你可能需要解码并像保存其他文件一样保存它。希望这能让你朝着正确的方向前进。 - Marshall Davis
1个回答

14

最简单的方法1如下:

String str = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...";
byte[] imagedata = DatatypeConverter.parseBase64Binary(str.substring(str.indexOf(",") + 1));
BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(imagedata));
ImageIO.write(bufferedImage, "png", new File("img.png"));

提示

  1. 为使用类 javax.xml.bind.DatatypeConverter,需要使用Java 6或更高版本。

1
这句话不应该是 str.substring(str.indexOf(",") + 1) 吗?如果图片的 MIME 类型是 image/jpeg,你可能不想将它写成 PNG 格式。 - VGR
① 好的。+1。谢谢!;) ② 嗯...我不知道。也许想要写入PNG格式...但是OP...我不知道。:P - Paul Vargas
谢谢您的回答。我已经尝试了这个方法,但是出现了一些错误,在执行BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(imagedata));之后抛出了一个异常。 - Baha' Al-Khateib
什么是异常?你可以使用http://pastie.org/来共享输出/代码。 :) - Paul Vargas
8
从Java 8开始,应该使用byte[] imagedata = java.util.Base64.getDecoder().decode(str.substring(str.indexOf(",") + 1));代替DatatypeConverter。 - Lunchbox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接