2

我现在正在为用 Java 编写的电子书阅读器工作。主要文件类型是fb2基于 XML 的类型。

这些书籍中的图像以长文本行的形式存储在<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();
    }
}
4

1 回答 1

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[]的图像值。

于 2016-08-14T11:32:29.063 回答