집 >데이터 베이스 >MySQL 튜토리얼 >데이터베이스의 BufferedInputStream Blob을 표시 가능한 이미지로 변환하는 방법은 무엇입니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!