java - 使用 Apache POI 从文档中获取图像

标签 java image apache-poi

我正在使用 Apache Poi 从 docx 读取图像。

这是我的代码:

enter code here

public Image ReadImg(int imageid) throws IOException {
    XWPFDocument doc = new XWPFDocument(new FileInputStream("import.docx"));
    BufferedImage jpg = null;
    List<XWPFPictureData> pic = doc.getAllPictures();
    XWPFPictureData pict = pic.get(imageid);
    String extract = pict.suggestFileExtension();
    byte[] data = pict.getData();
    //try to read image data using javax.imageio.* (JDK 1.4+)
    jpg = ImageIO.read(new ByteArrayInputStream(data));
    return jpg;
}

它可以正确读取图像,但不按顺序读取。

例如,如果文档包含

图像1.jpeg 图像2.jpeg 图像3.jpeg 图像4.jpeg 图片5.jpeg

上面写着

图片4 图3 图片1 图5 图片2

能帮我解决一下吗?

我想按顺序阅读图像。

谢谢, 西提克

最佳答案

public static void extractImages(XWPFDocument docx) {
    try {

        List<XWPFPictureData> piclist = docx.getAllPictures();
        // traverse through the list and write each image to a file
        Iterator<XWPFPictureData> iterator = piclist.iterator();
        int i = 0;
        while (iterator.hasNext()) {
            XWPFPictureData pic = iterator.next();
            byte[] bytepic = pic.getData();
            BufferedImage imag = ImageIO.read(new ByteArrayInputStream(bytepic));
            ImageIO.write(imag, "jpg", new File("D:/imagefromword/" + pic.getFileName()));
            i++;
        }

    } catch (Exception e) {
        System.exit(-1);
    }

}

关于java - 使用 Apache POI 从文档中获取图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20897387/

相关文章:

java - 如何将 @RestController 中的请求主体转换为抽象值列表?

java - Eclipse(和 m2eclipse)的问题

java - 如何在 Foursquare 中获取签到的纬度和经度?

java - 为什么这个 for 循环不使用 Apache POI 迭代行? java

java - Android:是否可以下载Android自定义View的类(它是LinearLayout的扩展)并在运行时实例化它?

python - 在 python 中使用图像处理计算粒子

php - 从数据库检索图像并更新图像或上传另一个文件

python - 保存图像文件Python的快速方法

android - android 中的 draw(java.awt.Graphics2D graphics) 方法是什么?

java - XSSFWorksheet 在关闭文件后复制输出