DCo*_*der 38 java base64 encode decode image
如何将Base64编码的图像写入文件?
我使用Base64将图像编码为字符串.首先,我读取文件,然后将其转换为字节数组,然后应用Base64编码将图像转换为字符串.
现在我的问题是如何解码它.
byte dearr[] = Base64.decodeBase64(crntImage);
File outF = new File("c:/decode/abc.bmp");
BufferedImage img02 = ImageIO.write(img02, "bmp", outF);
Run Code Online (Sandbox Code Playgroud)
该变量crntImage包含图像的字符串表示形式.
Jon*_*eet 62
假设图像数据已经是您想要的格式,您根本不需要图像ImageIO- 您只需要将数据写入文件:
// Note preferred way of declaring an array variable
byte[] data = Base64.decodeBase64(crntImage);
try (OutputStream stream = new FileOutputStream("c:/decode/abc.bmp")) {
stream.write(data);
}
Run Code Online (Sandbox Code Playgroud)
(我假设你在这里使用Java 7 - 如果没有,你需要编写一个手动的try/finally语句来关闭流.)
如果图像数据不是您想要的格式,则需要提供更多详细信息.
Mat*_*aun 19
Base64APIbyte[] decodedImg = Base64.getDecoder()
.decode(encodedImg.getBytes(StandardCharsets.UTF_8));
Path destinationFile = Paths.get("/path/to/imageDir", "myImage.jpg");
Files.write(destinationFile, decodedImg);
Run Code Online (Sandbox Code Playgroud)
如果你的编码图像以类似的东西开头data:image/png;base64,iVBORw0...,你将不得不删除该部分.请参阅此答案以获得简单的方法.
无需使用 BufferedImage,因为您已经在字节数组中拥有图像文件
byte dearr[] = Base64.decodeBase64(crntImage);
FileOutputStream fos = new FileOutputStream(new File("c:/decode/abc.bmp"));
fos.write(dearr);
fos.close();
Run Code Online (Sandbox Code Playgroud)