使用ImageIO从BLOB创建图像?

时间:2011-12-01 10:13:56

标签: java image blob

我尝试从BLOB创建图像。我尝试下面的代码,但它不是在步骤:

ImageIO.write(image, "JPG", iio);) 

imagenull。请给我任何建议。

 byte[] imgData = null;
 if (rs.next ())
 {
   Blob img  = rs.getBlob(1);
   imgData = img.getBytes(1,(int)img.length());
   File f1 = new File(fillFilePath); //fillFilePath = path where image want to store
   BufferedImage image = ImageIO.read(new ByteArrayInputStream(imgData));
   ImageOutputStream iio = ImageIO.createImageOutputStream(f1);
   ImageIO.write(image, "JPG", iio);
 }

如何使用ImageIO从BLOB创建图像?

2 个答案:

答案 0 :(得分:2)

来自ImageIO.read(InputStream)上的JavaDoc:

  

如果没有已注册的ImageReader声称能够读取生成的流,则返回null。

您的blob似乎不代表ImageIO能够理解的图像格式。 blob中存储的图像采用什么格式?

答案 1 :(得分:0)

下面的代码适合我。我能够从hive中检索BLOB(oracle)/ binary(hive):

InputStream is=rs.getBinaryStream(1);

toImage(is,"C:\\hive_image.png");

public void toImage(InputStream is,String imagePath) throws IOException
{

    BufferedImage bufferedImage=ImageIO.read(is);
    ImageIO.write(bufferedImage, "png", new File(imagePath));

}