将 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中文网其他相关文章!