BufferedInputStream in Bild konvertieren
Die Herausforderung entsteht, wenn versucht wird, einen aus einer Datenbank abgerufenen Blob in ein sichtbares Bild umzuwandeln. In diesem speziellen Fall wird der Blob als BufferedInputStream gespeichert und die direkte Konvertierung in ein Bild über ImageIO.read gibt null zurück.
Behebung des Problems
Vorgeschlagene Codeänderungen:
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; }
Durch die Implementierung dieser Änderungen wird der Blob korrekt abgerufen, in einen ByteArrayInputStream konvertiert und mit ImageIO.read.
als Bild gelesenDas obige ist der detaillierte Inhalt vonWie konvertiere ich einen BufferedInputStream-Blob aus einer Datenbank in ein sichtbares Bild?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!