2016-10-13 15 views
0

Я сохранил изображение TIFF в BFILE (oracle 10G). Я хочу прочитать его из базы данных и создать .tiff образ в локальный каталог. (Я использую JAI). Ниже приведен мой код, где ImageIO.read() возвращает null.Создайте изображение TIFF, сохраненное в BFILE Oracle, используя JAI в java

Я искал здесь, но я не смог получить точную помощь при чтении TIFF из базы данных и создании файла изображения .tiff. Пожалуйста, помогите мне.

+0

Не используйте Jai или 'ImageIO' для копирования файлов, они не очень хороши в этом. :-) Просто скопируйте содержимое 'inputStream' прямо на диск. См., Например, [этот ответ] (http://stackoverflow.com/a/29005856/1428606) о том, как скопировать байт файла по байту. – haraldK

ответ

0

Как уже упоминалось в моем комментарии, вы не должны использовать JAI или ImageIO для копирования файлов, они не очень хороши в этом. :-)

Вместо этого, это намного быстрее и более совместимо только для копирования содержимого InputStream прямо на диск (то есть FileOutputStream).

Изменение кода по линии моего комментария, вы получите:

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(); 

    // Skipping debug output for brevity 

    try (InputStream inputStream = bfile.getBinaryStream(); 
     OutputStream os_omg = new FileOutputStream("anand.tiff")) { 
     FileUtils.copy(inputStream, os_omg); 
    } 
    finally { 
     bfile.closeFile(); // Make sure you always close the file when done 
    } 
} 

FileUtils.copy могут быть реализованы в виде:

public void copy(final InputStream in, final OutputStream out) { 
    byte[] buffer = new byte[1024]; 
    int count; 

    while ((count = in.read(buffer)) != -1) { 
     out.write(buffer, 0, count); 
    } 

    // Flush out stream, to write any remaining buffered data 
    out.flush(); 
} 
+0

Большое спасибо за ваш код. Это решило мою проблему. –

 Смежные вопросы

  • Нет связанных вопросов^_^