Tukar BufferedInputStream kepada Imej
Cabaran timbul apabila cuba mengubah Blob yang diambil daripada pangkalan data kepada imej yang boleh dilihat. Dalam kes khusus ini, Blob disimpan sebagai BufferedInputStream dan menukarkannya terus kepada imej melalui ImageIO.read mengembalikan null.
Menangani Isu
Pengubahsuaian Kod yang Dicadangkan:
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; }
Dengan melaksanakan pengubahsuaian ini, Blob adalah diambil dengan betul, ditukar menjadi a ByteArrayInputStream, dan baca sebagai imej menggunakan ImageIO.read.
Atas ialah kandungan terperinci Bagaimana untuk Menukar Gumpalan BufferedInputStream daripada Pangkalan Data kepada Imej yang Boleh Dilihat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!