Search code examples
javaimageblob

Java BLOB to image file


I have a Blob object retrieved from a MySQL database by calling ResultSet.getBlob.

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

after that my imageBlob is something like this: data:image/png;base64,iVBORw0KGgoAAAANSUhE................

I've been googling around but I haven't found any solution to my problem: how do I create an image file and save it on the disk from this BLOB?


Solution

  • imageBlob is storing the base64 representation of your image data. For storing that onto your disk you need to decode that base64 representation into the original binary format representation.

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