將 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中文網其他相關文章!