首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java从fb2文件中获取图像

用Java从fb2文件中获取图像
EN

Stack Overflow用户
提问于 2016-08-14 19:16:01
回答 1查看 351关注 0票数 2

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

这些书中的图像以长文本行的形式存储在<binary>标记中(至少它看起来像文本编辑器中的文本)。

如何在Java中将此文本转换为实际的图片?为了使用XML,我使用了JDOM2库。

我尝试过的图片(jpeg文件)不是有效的:

代码语言:javascript
复制
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();
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-14 19:32:29

图像内容被指定为base64编码(参见:http://wiki.mobileread.com/wiki/FB2#Binary )。

因此,您必须从binary元素中获取文本并将其解码为二进制数据(在Java8中使用:java.util.base64和此方法:http://docs.oracle.com/javase/8/docs/api/java/util/Base64.html#getDecoder-- )

如果从代码中获取binaryText值,并将其提供给解码器的decode()方法,则应该为图像获得正确的byte[]值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38941665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档