【发布时间】:2017-02-22 05:56:13
【问题描述】:
我已将 TIFF 图像存储在 BFILE (oracle 10G) 中。我想从数据库中读取它并将 .tiff 图像创建到本地目录。 (我正在使用 JAI)。以下是我的代码,ImageIO.read() 返回 null。
OraclePreparedStatement pst =
(OraclePreparedStatement)con.prepareStatement("select chq_tif_img from
mstr where id = 52");
ResultSet rs = pst.executeQuery();
if(rs.next())
{
bfile = ((OracleResultSet)rs).getBFILE ("chq_tif_img ");
bfile.openFile();
System.out.println("BFILE: getDirAlias() = " + bfile.getDirAlias());
System.out.println("BFILE: getName() = " + bfile.getName());
System.out.println("BFILE: fileExists() = " + bfile.fileExists());
System.out.println("BFILE: isFileOpen() = " + bfile.isFileOpen());
System.out.println("BFILE: length = " + bfile.length());
InputStream inputStream = bfile.getBinaryStream();
System.out.println("-->"+inputStream);
BufferedImage bi = ImageIO.read(inputStream);
TIFFEncodeParam params_omg= new TIFFEncodeParam();
FileOutputStream os_omg = new FileOutputStream("anand.tiff");
javax.media.jai.JAI.create("encode", bi, os_omg, "TIFF", params_omg);
inputStream.close();
bfile.closeFile();
}
我在这里搜索过,但在从数据库中读取 TIFF 和创建 .tiff 图像文件方面无法获得确切的帮助。请帮我。
【问题讨论】:
-
不要使用JAI或
ImageIO来复制文件,他们不太擅长。 :-) 只需将inputStream的内容直接复制到磁盘即可。例如,请参阅 this answer 了解如何逐字节复制文件。
标签: java inputstream fileoutputstream jai