Convertir BufferedInputStream en image
Le défi se pose lorsque l'on tente de transformer un Blob récupéré d'une base de données en une image visible. Dans ce cas précis, le Blob est stocké en tant que BufferedInputStream et sa conversion directement en image via ImageIO.read renvoie null.
Résoudre le problème
Modifications de code suggérées :
public BufferedImage getPhoto(Connection con) throws IOException, SQLException { Blob blob = getPhoto(con); BufferedImage image = null; byte[] data; try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); InputStream is = blob.getBinaryStream()) { int nRead; byte[] buffer = new byte[4096]; while ((nRead = is.read(buffer, 0, buffer.length)) != -1) { baos.write(buffer, 0, nRead); } data = baos.toByteArray(); image = ImageIO.read(new ByteArrayInputStream(data)); } catch (SQLException | IOException e2) { e2.printStackTrace(); } return image; }
En implémentant ces modifications, le Blob est récupéré correctement, converti en ByteArrayInputStream et lu comme une image à l'aide de ImageIO.read.
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!