栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用JAVA Apache POI对图片进行裁剪展示

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用JAVA Apache POI对图片进行裁剪展示

使用poi实现对图片进行裁剪展示进而实现骑缝章的效果,主要原理就是计算偏移量

代码如下:

 XMLSlideShow pptx = new XMLSlideShow(new FileInputStream("F:\temp\office\2013/2013.pptx"));

        try {
            List list = pptx.getSlideMasters();
            for (XSLFSlideMaster master : list) {
                XSLFSlideLayout[] layoutArr = master.getSlideLayouts();
                for (XSLFSlideLayout layout : layoutArr) {
                    System.out.println(layout.getName());
                }
            }

            XSLFSlide slide = pptx.getSlides().get(0);
            byte[] photoData = FileUtil.getFile("F:/temp/photo/seal.png");
            XSLFPictureData pictureData = pptx.addPicture(photoData, PictureType.PNG);
            XSLFPictureShape shape = slide.createPicture(pictureData);
            Rectangle2D.Double aDouble = new Rectangle2D.Double(0, 0, 85.03935, 170.0787);
            shape.setAnchor(aDouble);
            CTPicture xmlObject = (CTPicture)shape.getXmlObject();
            CTBlipFillProperties blipFill = xmlObject.getBlipFill();
            CTRelativeRect ctRelativeRect = blipFill.addNewSrcRect();
            ctRelativeRect.setL(50000); // 百分之五十
//            ctRelativeRect.setR(300);
            FileOutputStream out = new FileOutputStream("F:\temp\office\2013/plain_image.pptx");
            pptx.write(out);
            out.close();
        } finally {
            pptx.close();
        }

接下来讲述一下两块重点代码:

四个参数分别为: 1.x起始点 2.y起始点 3.图片宽 4.图片高

图片的宽和高单位是pt,一般都是正圆宽和高是一致的,但是由于进行了裁剪,所以要吧宽减少对应的百分比,不然会变扁

 原本图片的宽度是6cm,转换为pt为170.0787

假如要裁剪3cm,即裁剪了3/6=50%

所以setL的值就为50000 计算方式为:50 * 1000(至于为啥乘以1000请看计算方式参考)

图片的宽度改为170.0787 * 50% = 85.03935

成品:

 实现了类型骑缝章的效果~

计算方式参考:

CTRelativeRect之所以被命名为relative,是因为它的维度是幻灯片高度和幻灯片宽度的百分比。您的长图像将被拉伸或压缩到这些百分比尺寸。另外,所有的左、右、上和下偏移都是以滑动高度和滑动宽度的百分比表示的。

根据您所显示的所需效果,图像应填满整个幻灯片宽度。所以图片宽度将从500px拉长到950px。这是950/500的比率。在相同的比例下,高度也将被拉伸。

了解了这一点,我们需要计算图片尺寸从像素到幻灯片尺寸的百分比。知道了这一点,我们就可以计算顶部偏移量为(100% -图片高度以%为单位)/ 2。如果设置了相同的底部偏移量,那么长图片的正中间将显示在幻灯片背景中。如果顶部偏移量为(100% -图片高度百分比)/ 2) - 100%,底部偏移量为(100% -图片高度百分比)/2+ 100%,则幻灯片背景在长图片的中间下方显示1个幻灯片高度。

除此之外,Microsoft总是将它自己奇怪的度量单位考虑在内。因为避免了百分比的浮点数,所以这里的度量单位是千分之一。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039545.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号