我尝试从BLOB创建图像。我尝试下面的代码,但它不是在步骤:
ImageIO.write(image, "JPG", iio);)
image
是null
。请给我任何建议。
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创建图像?
答案 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));
}