Masalah:
Bagaimana saya boleh menukar objek BufferedInputStream, yang diambil daripada pangkalan data, ke dalam BufferedImage? Kod sedia ada mengembalikan imej nol.
Penyelesaian:
Contoh:
Kod Java berikut menggunakan Blob#getBinaryStream untuk membaca imej daripada pangkalan data dan tukarkannya kepada BufferedImage:
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.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import javax.imageio.ImageIO; public class ImageDatabaseHelper { private Connection con; public BufferedImage loadImage(int imageId) throws IOException, SQLException { PreparedStatement stmt = null; ResultSet rs = null; BufferedImage image = null; try { stmt = con.prepareStatement("select image from images where id = ?"); stmt.setInt(1, imageId); rs = stmt.executeQuery(); while (rs.next()) { Blob blob = rs.getBlob(1); ByteArrayOutputStream baos = new ByteArrayOutputStream(); try (ByteArrayInputStream bais = new ByteArrayInputStream(blob.getBinaryStream())) { ImageIO.read(bais).writeTo(baos); } image = ImageIO.read(new ByteArrayInputStream(baos.toByteArray())); } } finally { try { rs.close(); } catch (Exception e) { } try { stmt.close(); } catch (Exception e) { } } return image; } }
Atas ialah kandungan terperinci Bagaimana untuk Menukar BufferedInputStream daripada Pangkalan Data kepada BufferedImage?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!