首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java将图片按照原尺寸比例存入word中

java将图片按照原尺寸比例存入word中

作者头像
johnhuster的分享
发布2022-03-28 20:18:52
发布2022-03-28 20:18:52
1.5K00
代码可运行
举报
文章被收录于专栏:johnhusterjohnhuster
运行总次数:0
代码可运行

在使用poi往word里面插入图片时可以使用

代码语言:javascript
代码运行次数:0
运行
复制
XWPFParagraph.insertNewRun(i).addPicture(InputStream pictureData, int pictureType, String filename, int width, int height)方法

但是为了使得插入word中的图片按照原图尺寸进行等比例缩放,我们必须必须获得原图的尺寸,常用的方法就是通过

代码语言:javascript
代码运行次数:0
运行
复制
javax.imageio.ImageIO.read(InputStream input)方法读取图片信息,这样就会涉及到两次图片读写,为了减少不必要的网络通信,我们可以使用下面的方式进行优化:
代码语言:javascript
代码运行次数:0
运行
复制
URL url = new URL(runText);
                                byte[] bytes = IOUtils.toByteArray(url.openStream());
                                ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
                                BufferedImage img = javax.imageio.ImageIO.read(bis);
                                int width = img.getWidth();
                                int height = img.getHeight();
                                //下面按照图片的实际大小进行同比例缩放
                                int picHeight = 300;
                                int picWidth = picHeight * width/height;
                                //下次读取该ByteArrayInputStream 之前一定要调用reset进行复位,这样才能读到图片所有数据
                                bis.reset();
                                para.insertNewRun(i).addPicture(bis,
                                        XWPFDocument.PICTURE_TYPE_JPEG, url.getFile(), Units.toEMU(picWidth), Units.toEMU(picHeight));

好了,上面就是通过ByteArrayInputStream来减少网络通信次数的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档