Java BLOB в файл изображения - PullRequest
0 голосов
/ 19 мая 2018

У меня есть BLOB, который извлекается из базы данных MySQL следующим образом:

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

, после этого мой imageBlob выглядит примерно так: data:image/png;base64,iVBORw0KGgoAAAANSUhE................

I 'мы гуглили, но я не нашел решения своей проблемы: как создать файл изображения и сохранить его на диске из этого BLOB-файла?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

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 голосов
/ 19 мая 2018

Сначала конвертируем BLOB-объект в BuffededImage:

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

Затем BufferedImage to Image:

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) {
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...