将 Base64 编码的图像写入文件使用 Java 8 的 Base64 API

2022-08-31 17:30:05

如何将 Base64 编码的图像写入文件?

我已使用Base64将图像编码为字符串。首先,我读取文件,然后将其转换为字节数组,然后应用 Base64 编码将图像转换为字符串。

现在我的问题是如何解码它。

byte dearr[] = Base64.decodeBase64(crntImage);
File outF = new File("c:/decode/abc.bmp");
BufferedImage img02 = ImageIO.write(img02, "bmp", outF); 

该变量包含图像的字符串表示形式。crntImage


答案 1

假设图像数据已经是您想要的格式,则根本不需要 - 您只需要将数据写入文件: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);
}

(我假设你在这里使用的是Java 7 - 如果没有,你需要编写一个手动try/final语句来关闭流。

如果图像数据的格式不是您想要的格式,则需要提供更多详细信息。


答案 2

使用 Java 8 的 Base64 API

byte[] decodedImg = Base64.getDecoder()
                    .decode(encodedImg.getBytes(StandardCharsets.UTF_8));
Path destinationFile = Paths.get("/path/to/imageDir", "myImage.jpg");
Files.write(destinationFile, decodedImg);

如果编码的图像以 类似 的内容开头,则必须删除该部分。请参阅此答案以获取执行此操作的简单方法。data:image/png;base64,iVBORw0...