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

Posted

技术标签:

【中文标题】在java中将DataURL图像转换为图像文件【英文标题】:Convert DataURL image to image file in java 【发布时间】:2016-03-29 05:10:36 【问题描述】:

我在我的 java servlet 中接收到图像 DataURL,它看起来像:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...

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

【问题讨论】:

通常有一些你实际尝试过的代码会提供更好的响应。您可能需要对它进行解码并像保存任何其他文件一样保存它。希望这能让你朝着正确的方向前进。 【参考方案1】:

最简单的方法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"));

注意事项

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

【讨论】:

不应该是str.substring(str.indexOf(",") + 1)吗?如果图像的 MIME 类型是 image/jpeg,您可能不想将其写为 PNG。 是的+ 1。谢谢! ;) ② 嗯...我不知道。可能是 想写入 PNG 格式...但是 OP...我不知道。 :P 感谢您的回答我已经这样做了,但是我遇到了一些错误,BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(imagedata)); 之后出现异常 有什么异常?您可以使用pastie.org 共享输出/代码。 :) 从 Java 8 开始,您应该使用 byte[] imagedata = java.util.Base64.getDecoder().decode(str.substring(str.indexOf(",") + 1)); 而不是 DatatypeConverter

以上是关于在java中将DataURL图像转换为图像文件的主要内容,如果未能解决你的问题,请参考以下文章

如何将图像转换为dataurl

将远程图像转换为dataURL,客户端[重复]

将 ImageData 对象(不是画布)转换为图像 dataURL

画布 todataURL 图像 Png 质量不起作用

如何在 Flutter 中将图像转换为文件?

如何在java中将文本图像(计算机输入)转换为字符串[关闭]