在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图像转换为图像文件的主要内容,如果未能解决你的问题,请参考以下文章