java - Java BLOB 到图像文件
问题描述
我有一个BLOB
从 MySQL 数据库中检索到的,如下所示:
Blob imageBlob;
while (rs.next()) {
imageBlob= rs.getBlob("face");
}
之后我imageBlob
是这样的:data:image/png;base64,iVBORw0KGgoAAAANSUhE................
我一直在谷歌搜索,但我没有找到任何解决我的问题的方法:如何创建一个图像文件并将其保存在这个 BLOB 的磁盘上?
解决方案
imageBlob
正在存储图像数据的 base64 表示。要将其存储到磁盘上,您需要将该 base64 表示解码为原始二进制格式表示。
// Imports required
import java.util.Base64
import java.io.ByteArrayInputStream;
import java.io.File;
import javax.imageio.ImageIO;
String imageData = "data:image/png;base64,iVBORw0KGgoAAAANSUhE....";
String base64Data = imageData.split(",")[1]
byte[] decodedBytes = Base64.getDecoder().decode(base64Data);
ByteArrayInputStream bis = new ByteArrayInputStream(decodedBytes);
BufferedImage image = ImageIO.read(bis);
File outputFile = new File("output.png");
ImageIO.write(image, "png", outputFile);