我正在尝试从 mysql 数据库中检索图像 blob 并将其转换回图像文件。迭代 mysql ResultSet 为:
while(rs.next())
{
byte[] byteArray=rs.getBytes("image_blob");
InputStream in=new ByteArrayInputStream(byteArray);
ImageInputStream is = ImageIO.createImageInputStream(in);
BufferedImage image_Bf=ImageIO.read(is);
ImageIO.write(image_Bf, "png",new File("images/"+rs.getString("name")));
}
当我编译并运行我的 java 类时,出现错误:
java.lang.IllegalArgumentException: image == null!
我该如何解决这个问题?
最佳答案
ImageIO.read(is);
为您返回 null。 Javadoc说这意味着它无法找到合适的 ImageReader
,这似乎是无效输入的标志。
实际上,您的错误在这个字符串中:rs.getBytes("name");
。您没有将图像内容获取到 byteArray
,而是以字节形式获取图像 name,因此 ImageIO.read
失败。
编辑:
如果它仍然失败并出现相同的错误,那么您将不得不进行调试。尝试将字节缓冲区直接输出到文件。这样你能得到有效的图像吗?我很确定 ImageIO
需要正确的图像来操作并转换为 PNG。
while(rs.next())
{
byte[] byteArray=rs.getBytes("image_blob");
FileOutputStream fos = new FileOutputStream("images/"+rs.getString("name"));
fos.write(byteArray);
fos.close();
}
关于java - 如何在 Java 中将 ImageInputStream 转换为 BufferedImage?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34328928/