gpt4 book ai didi

java - 无法将字节数组转换为缓冲图像

转载 作者:行者123 更新时间:2023-11-28 23:20:44 25 4
gpt4 key购买 nike

我正在使用 mysql 作为我的数据库。我在我的 java 代码中获取字节数组。然后我将这个字节数组作为 LONGBLOB 存储在数据库中。现在从数据库中检索它时,我使用以下代码:

package com.sendSms;
import java.awt.image.BufferedImage;
import java.io.*;
import java.sql.*;
import javax.imageio.ImageIO;
import org.apache.commons.io.IOUtils;
public class SampleTest {
public Connection getConnection(){
Connection con=null;
try{
Class.forName("com.mysql.jdbc.Driver");
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/forTest","root","123456");
}catch(Exception ex){}
return con;
}
public byte[] getFromDb(){
byte[] arr=null;
try{
Connection con = getConnection();
PreparedStatement pstmt=con.prepareStatement("select id,image from TestAndroid where id = ?");
pstmt.setInt(1, 16);
ResultSet rs = pstmt.executeQuery();
while(rs.next()){
// int id=rs.getInt("id");

arr = rs.getBytes("image");
}
}
catch(Exception ex){ex.printStackTrace();}

return arr;
}
public void go() throws IOException{
byte[] arr=getFromDb();
InputStream is=new ByteArrayInputStream(arr);
BufferedImage bi= ImageIO.read(is);
if(bi==null){
System.out.println("bi is NULL");
}
else{
System.out.println("bi is NOT NULL");
}
}
public static void main(String[] args) throws IOException {
SampleTest st = new SampleTest();
st.go();
}

}

当我运行这段代码时,我得到的 BufferedImage 为 null;尽管此时字节数组不为空。如何获得此 BufferedImage。我需要 BufferedImage 因为我需要将它传递给其他只接受 BufferedImage 的函数。我该如何解决这个问题。

此外,当在 db 中存储字节数组时,我正在使用:

PreparedStatement 上的

setBytes(byte array) 方法 & 在 Db 中我使用 LONGBLOB 数据类型来存储这个字节数组。

最佳答案

ImageIO.read(InputStream is) 的 javadoc方法状态:

If no registered ImageReader claims to be able to read the resulting stream, null is returned.

可能是您的字节数组不代表有效的图像格式?

关于java - 无法将字节数组转换为缓冲图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41712667/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com