Maison > Article > base de données > Comment convertir un BufferedInputStream d'une base de données en BufferedImage ?
Problème :
Comment puis-je convertir un objet BufferedInputStream, récupéré d'une base de données, dans une BufferedImage ? Le code existant renvoie une image nulle.
Solution :
Exemple :
Le code Java suivant utilise Blob#getBinaryStream pour lire une image de la base de données et convertissez-le en BufferedImage :
import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.sql.Blob; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.imageio.ImageIO; public class ImageDatabaseHelper { private Connection con; public BufferedImage loadImage(int imageId) throws IOException, SQLException { PreparedStatement stmt = null; ResultSet rs = null; BufferedImage image = null; try { stmt = con.prepareStatement("select image from images where id = ?"); stmt.setInt(1, imageId); rs = stmt.executeQuery(); while (rs.next()) { Blob blob = rs.getBlob(1); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (ByteArrayInputStream bais = new ByteArrayInputStream(blob.getBinaryStream())) { ImageIO.read(bais).writeTo(baos); } image = ImageIO.read(new ByteArrayInputStream(baos.toByteArray())); } } finally { try { rs.close(); } catch (Exception e) { } try { stmt.close(); } catch (Exception e) { } } return image; } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!