집 >데이터 베이스 >MySQL 튜토리얼 >Java 코드가 Blob 객체를 null 값을 반환하는 이미지로 변환하는 이유는 무엇입니까?
BufferedInputStream을 이미지로 변환
질문은 Java 프로그래밍을 사용하여 데이터베이스에서 검색된 Blob 개체를 이미지로 변환하는 것과 관련이 있습니다. Blob에 이미지 데이터가 포함되어 있다고 가정하지만 변환 결과 null 값이 발생합니다.
답변
전체 코드 예
다음 코드 조각은 다음 코드 조각에서 이미지를 검색하고 표시하는 방법에 대한 예를 제공합니다. 앞서 언급한 고려 사항을 사용한 H2 데이터베이스:
import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JScrollPane; public class ImageDatabaseExample { public static void main(String[] args) { try { // Load sample image into database saveImage(); // Retrieve and display image loadImage(); } catch (IOException | ClassNotFoundException | SQLException e) { e.printStackTrace(); } } protected static Connection getConnection() throws ClassNotFoundException, SQLException { Class.forName("org.h2.Driver"); return DriverManager.getConnection("jdbc:h2:d:\Image", "sa", ""); } protected static void saveImage() throws IOException, ClassNotFoundException, SQLException { Connection con = getConnection(); PreparedStatement stmt = null; ByteArrayOutputStream baos = null; ByteArrayInputStream bais = null; try { baos = new ByteArrayOutputStream(); BufferedImage img = ImageIO.read(new File("/path/to/file")); ImageIO.write(img, "png", baos); baos.close(); bais = new ByteArrayInputStream(baos.toByteArray()); stmt = con.prepareStatement("insert into images (image) values (?)"); stmt.setBinaryStream(1, bais); stmt.executeUpdate(); } finally { if (stmt != null) { stmt.close(); } if (con != null) { con.close(); } } } protected static void loadImage() throws IOException, ClassNotFoundException, SQLException { Connection con = getConnection(); PreparedStatement stmt = null; ResultSet rs = null; try { stmt = con.prepareStatement("select image from images"); rs = stmt.executeQuery(); while (rs.next()) { Blob blob = rs.getBlob(1); BufferedImage img = ImageIO.read(blob.getBinaryStream()); JOptionPane.showMessageDialog(null, new JScrollPane(new JLabel(new ImageIcon(img)))); } } finally { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (con != null) { con.close(); } } } }
위 내용은 Java 코드가 Blob 객체를 null 값을 반환하는 이미지로 변환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!