2016-08-14 36 views
1

我現在正在爲用Java編寫的電子書閱讀器工作。主文件類型是fb2,它是基於XML的類型。從Java的fb2文件中獲取圖像

這些書籍裏面的圖像存儲在<binary>標籤裏面作爲長文本行(至少它看起來像文本編輯器中的文本)。

如何在Java中的實際圖片中轉換此文本?爲了使用XML,我使用了JDOM2庫。

我已經試過不會產生有效的照片(JPEG文件):

private void saveCover(Object book) { 
    // Necessary cast to process with book 
    Document doc = (Document) book; 

    // Document root and namespace 
    Element root = doc.getRootElement(); 
    Namespace ns = root.getNamespace(); 

    Element binaryEl = root.getChild("binary", ns); 

    String binaryText = binaryEl.getText(); 

    File cover = new File(tempFolderPath + "cover.jpeg"); 

    try (
     FileOutputStream fileOut = new FileOutputStream(cover); 
     BufferedOutputStream bufferOut = new BufferedOutputStream(
      fileOut);) { 

     bufferOut.write(binaryText.getBytes()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

回答

1

圖像內容被指定爲base64編碼(見:http://wiki.mobileread.com/wiki/FB2#Binary)。

因此,你必須採取從binary元素的文本,並在二進制數據(在Java中8用途:java.util.base64這種方法:http://docs.oracle.com/javase/8/docs/api/java/util/Base64.html#getDecoder--)進行解碼。如果你從binaryText

您代碼,並將其送入解碼器的decode()方法,您應該獲得圖像的正確byte[]值。

+0

這工作就像一個魅力!謝謝! – Tol182