Java 将EMF图像从MS Word转换为BuffereImage

Java 将EMF图像从MS Word转换为BuffereImage,java,bufferedimage,Java,Bufferedimage,我正在写一个程序,可以从图像中读取文本。通过从XWPFPictureData中获取BuffereImage,我在JPG/PNG上获得了成功 public static BufferedImage convertPicDataToBuffImg(XWPFPictureData objPicData) { byte[] bData = objPicData.getData(); BufferedImage objInBuffImg = ImageIO.read(new ByteArr

我正在写一个程序,可以从图像中读取文本。通过从XWPFPictureData中获取BuffereImage,我在JPG/PNG上获得了成功

public static BufferedImage convertPicDataToBuffImg(XWPFPictureData objPicData) {
    byte[] bData = objPicData.getData();
    BufferedImage objInBuffImg = ImageIO.read(new ByteArrayInputStream(bData));
    ...
}
但是,当对EMF图片类型使用相同的代码时,objInBuffImg变为null。正如我读到的,这是因为类型是EMF

为了使用我使用的相同方法,我想将带有PictureType Document.PICTURE\u TYPE\u EMF的XWPFPictureData转换为BuffereImage

所以基本上我想做的事情如下:

public static BufferedImage convertPicDataToBuffImg(XWPFPictureData objPicData) {
    BufferedIMage objInBuffImg = null;

    if (objPicData.getPictureType() == Document.PICTURE_TYPE_EMF)) {
        // Convert to BufferedImage
    } else {
        byte[] bData = objPicData.getData();
        objInBuffImg = ImageIO.read(new ByteArrayInputStream(bData));
    }
    ...
}
我一直在搜索和阅读有关蜡染的内容,但无法准确地理解如何做我想做的事情

有什么想法吗


非常感谢您的帮助

我已经创建了两个
ImageIO
插件来包装Batik,可以将(一些)WMF文件读入
BufferedImage
s中。虽然这完全取决于Batik的WMF/EMF功能,但如果它对您有效,您应该能够保留原始代码,而不需要额外的分支来处理EMF。@haraldK非常感谢您。将尝试此操作并发送反馈。:)@haraldK在您的项目中进行mvn安装时,会出现以下错误。我已经尝试将其更改为使用JDK1.7/1.8,仍然是相同的错误。git/TwelveMonkeys/common/common lang/src/test/java/com/TwelveMonkeys/util/CollectionAbstractTest.java:[1139,31]对toArray的引用不明确[ERROR]java.util.Collection中的方法toArray(T[])和方法toArray(java.util.function.IntFunction)在java.util.Collection中,如果出现错误,Maven不会选择您的JDK设置并使用更新的JDK。查阅Maven文档。但是,除非进行更改,否则不需要从源代码构建。我建议使用公共Maven依赖项。或者使用项目页面上的下载链接。我已经创建了两个
ImageIO
插件,用于包装蜡染,能够将(一些)WMF文件读取到
BufferedImage
s中。虽然这完全取决于Batik的WMF/EMF功能,但如果它对您有效,您应该能够保留原始代码,而不需要额外的分支来处理EMF。@haraldK非常感谢您。将尝试此操作并发送反馈。:)@haraldK在您的项目中进行mvn安装时,会出现以下错误。我已经尝试将其更改为使用JDK1.7/1.8,仍然是相同的错误。git/TwelveMonkeys/common/common lang/src/test/java/com/TwelveMonkeys/util/CollectionAbstractTest.java:[1139,31]对toArray的引用不明确[ERROR]java.util.Collection中的方法toArray(T[])和方法toArray(java.util.function.IntFunction)在java.util.Collection中,如果出现错误,Maven不会选择您的JDK设置并使用更新的JDK。查阅Maven文档。但是,除非进行更改,否则不需要从源代码构建。我建议使用公共Maven依赖项。或者使用项目页面上的下载链接。