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

Javascript 在java中将DataURL图像转换为图像文件,javascript,java,html,image,servlets,Javascript,Java,Html,Image,Servlets,我在java servlet中接收图像数据URL,它看起来像: data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA... 我需要将其保存为图像文件,如何才能做到这一点?最简单的方法如下: String str = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA..."; byte[] imagedata = DatatypeConverter.parseBase64Binary(str.sub

我在java servlet中接收图像数据URL,它看起来像:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAA...
我需要将其保存为图像文件,如何才能做到这一点?

最简单的方法如下:

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
    ,您需要Java6o更高版本

  • 通常,使用一些您实际尝试过的代码可以提供更好的响应。您可能需要对其进行解码并将其保存为任何其他文件。希望这能让您走上正确的方向。这不应该是
    str.substring(str.indexOf(“,”)+1)
    ?如果图像的MIME类型是
    image/jpeg
    ,您可能不想将其作为PNG编写。① 是的<代码>+1。谢谢!;)② 哼。。。我不知道。可能是我想写PNG格式的。。。但是手术。。。我不知道谢谢你的回答,我已经这样做了,但是我有一些错误,BuffereImage BuffereImage=ImageIO.read(new ByteArrayInputStream(imagedata))之后出现了一个异常;例外情况是什么?可用于共享输出/代码。:)从Java8开始,您应该使用
    byte[]imagedata=Java.util.Base64.getDecoder().decode(str.substring(str.indexOf(“,”)+1))而不是DatatypeConverter