BufferedInputStream を画像に変換する
データベースから取得した BLOB を可視画像に変換しようとするときに問題が発生します。この特定のケースでは、Blob は BufferedInputStream として保存され、ImageIO.read 経由で画像に直接変換すると null が返されます。
問題への対処
推奨されるコードの変更:
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; }
これらの変更を実装すると、Blob は次のようになります。正しく取得され、ByteArrayInputStream に変換され、次を使用して画像として読み取られます。 ImageIO.read.
以上がBufferedInputStream Blob をデータベースから可視イメージに変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。