我正在尝试从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!
我该如何解决这个问题?
答案 0 :(得分:2)
ImageReader
为您返回null。 Javadoc表示无法找到合适的rs.getBytes("name");
,这似乎是输入无效的标志。
实际上,您的错误在此字符串中:byteArray
。您没有将图像内容提供给ImageIO.read
,而是以字节形式显示 name ,因此ImageIO
失败。
修改强>
如果它仍然以相同的错误失败,那么你将不得不进行调试。尝试直接将字节缓冲区输出到文件。你这样得到有效的形象吗?我非常确定while(rs.next())
{
byte[] byteArray=rs.getBytes("image_blob");
FileOutputStream fos = new FileOutputStream("images/"+rs.getString("name"));
fos.write(byteArray);
fos.close();
}
需要正确的图像来操作并转换为PNG。
{{1}}
答案 1 :(得分:1)
成功解决了这个问题。这是从数据库中检索图像的正确代码
background-image: url("../images/core/primnavItemBG_sprite.png");
border: 1px solid #FFFFFF; /*In Border color use color same as background color otherwise use border-size:0*/
box-shadow: none;
outline: none;