Java BLOB 到图像文件

问题描述 投票:0回答:2

我有一个

Blob
对象通过调用
ResultSet.getBlob
从MySQL数据库检索。

Blob imageBlob;
while (rs.next()) {
    imageBlob= rs.getBlob("face");
}

在那之后我的

imageBlob
是这样的:
data:image/png;base64,iVBORw0KGgoAAAANSUhE................

我一直在谷歌搜索,但我还没有找到任何解决我的问题的方法:我如何创建一个图像文件并将其保存在磁盘上从这个 BLOB?

java image blob
2个回答
3
投票

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);    

0
投票

首先将 Blob 转换为 BuffedImage:

Blob aBlob = rs.getBlob("Photo");
InputStream is = aBlob.getBinaryStream(1, aBlob.length());
BufferedImage image=ImageIO.read(is);

然后缓冲图像到图像:

try {
    // Retrieve Image
    File outputfile = new File("saved.png");
    ImageIO.write(image, "png", outputfile); // Write the Buffered Image into an output file
    Image image  = ImageIO.read(new File("saved.png")); // Opening again as an Image
} catch (IOException e) {
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.