在某项目中,用Java的POI包用int index=slideShow.addPicture()方法向PPTX(2007)中插入图片,并用slide.createPicture(index)方法把图片添加到指定的位置。

发现在依次添加20张图片后,并添加到幻灯片指定的页时,图片顺序乱了。经测试发现:依次加入的图片返回的index分别为:0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19。但图片真正的位置却是:0,10,11,12,13,14,15,16,17,18,19,1,,2,3,4,5,6,7,8,9

经到POI包(开源)内调试发现,图片的位置顺序规则是这样的:先插入10张图片,第11-20张图片的插入位置是原index为0-1(第一张和第二张图片之间),第21-30张图片的插入位置是原index为1-2之间。

算法可这样设计:

XMLSlideShow pptx= new XMLSlideShow(OPCPackage.open(new FileInputStream("E:\\empty.pptx")));  //ppt模板

先把所有图片插入到ppt中

List indexList = new ArrayList();  //存储图片索引

String path="E:\\ppt\\pic\\"; //图片路径

String[] pic=new String[30];  //30张图片

for(int m=0;m<30;m++)

{

File file = new File(path+(i+1)+".JPG");

BufferedInputStream in=new BufferedInputStream(new FileInputStream(file));

ByteArrayOutputStream out=new ByteArrayOutputStream(1024);

int size=0;

byte[] temp=new byte[1024];

while ((size = in.read(temp)) != -1)

{

out.write(temp, 0, size);

}

in.close();

byte[] content=out.toByteArray();

int newIndex = pptx.addPicture(content, Picture.JPEG);

indexList.add(String.valueOf(index+1));    //存储图片索引

}

Collections.sort(indexList);     //按字典序把(inex+1)进行排序

把图片插入到slide指定的位置

for(int m=0;m

{

XSLFSlide slide=pptx.createSlide();

XSLFPictureShape picShape=slide.createPicture(indexList.indexOf(String.valueOf((m+1))));  //返回(index+1)在列表中的字典序

picShape.setAnchor(new Rectangle(20,20,500,500));

picShape.setLineWidth(0);

}

结论:ppt每加入一张图片,依次返回递增的index索引,但位置却是按(index+1)字符串字典序排序。

解决方案:每加入一张图片,把返回的(index+1)存储到索引列表中,按字典序排序。当向slide中插入指定的图片时,只需取(index+1)在索引列表中真正的index即可。。。

搞不明白,apache研发团队在开发时,为什么这么搞,若位置也按加入顺序排序,可省得多少麻烦啊。。。。。。。。。。

QQ:251171985

E-Mail:jthuahua@126.com

照片幻灯片java_Java的POI向幻灯片中插入图片算法设计相关推荐

  1. 计算机教案在幻灯片中插入影片,《在幻灯片中插入图片》教学设计

    一.教材分析 本课是义务教育山东省小学课本(泰山出版社)<小学信息技术>第三册(上)第8课插入图片. 本教学内容PowerPoint在学生的知识结构中,占有非常重要的地位,它是信息技术与其 ...

  2. 计算机教案在幻灯片中插入影片,小学信息技术优质课《在幻灯片中插入图片》教学设计及反思...

    分析 <在幻灯片中插入图片>这节课是小学信息技术四年级下册第一单元第三课的教学内容.本节课的主要内容是在幻灯片中插入图片.它是在学生掌握了纯文字幻灯片制作的基础上进行教学的,并在此基础上插 ...

  3. 计算机教案在幻灯片中插入影片,第4课 《在幻灯片中插入图片》 教学设计(张海龙)...

    第4课<在幻灯片中插入图片>教学设计 大坝中心小学  张海龙 一.教学目标: 1.知识与技能(1)掌握在幻灯片中插入剪贴画和图片文件的基本操作方法:(2)知道图片工具栏常用工具的功能与用法 ...

  4. 计算机教案在幻灯片中插入影片,初中信息技术《在幻灯片中插入图片》教学设计及反思...

    [教学目标] (1)掌握幻灯片中插入剪贴画的方法. (2)能将图片文件插入幻灯片中. (3)能制作图文并茂的幻灯片 [教学重难点] 重点:插入图片,达到图文并茂的效果. 难点:插入图片文件. [教学过 ...

  5. 办公自动化-幻灯片中插入图片与表格-pptx模块-0225

    导入模块 创建幻灯片,插入一页 定位一些位置对象 添加图片 需要一个图片地址 保存幻灯片 完整代码 效果图 插入表格===> 表格需要指定行列 指定行列 定义位置对象 添加一个表格对象 如果要给 ...

  6. 计算机教案在幻灯片中插入影片,小学信息技术《在幻灯片中插入艺术字》说课稿...

    小学信息技术<在幻灯片中插入艺术字>说课稿 作为一名辛苦耕耘的教育工作者,时常需要用到说课稿,编写说课稿助于积累教学经验,不断提高教学质量.我们应该怎么写说课稿呢?以下是小编收集整理的小学 ...

  7. 第5章第17节:案例:使两张幻灯片中的图片进行平滑切换 [PowerPoint精美幻灯片实战教程]

    本节演示在幻灯片切换时,如何使这两张幻灯片中的图片进行平滑的切换. 点击切换选项卡,打开切换功能面板. 在切换效果列表中,选择平滑选项. 点击幻灯片编号下方的星星图标,可以预览幻灯片的切换效果. 从图 ...

  8. 第10章第10节:使用iSlide的幻灯片诊断工具优化幻灯片中的图片 [PowerPoint精美幻灯片实战教程]

    插件提供的幻灯片诊断工具非常实用,可以诊断幻灯片中的字体.色彩是否规范,已经是否存在大尺寸的图片素材. 点击底部的一键诊断按钮,即可诊断幻灯片中可能存在的设计问题. 由于当前幻灯片存在一张很大的图片素 ...

  9. 第10章第14节:使用iSlide的图表库往幻灯片中插入精美的图表 [PowerPoint精美幻灯片实战教程]

    您将在本节通过图表库工具,往幻灯片中插入精美的图表,首先点击此处的图表库工具,打开图表库窗口. 然后在所需的图表的缩略图上点击,即可将图表插入到幻灯片. 点击右上角的关闭图标,关闭图表库窗口. 使用键 ...

  10. 第3章第10节:如何压缩幻灯片中的图片素材 [PowerPoint精美幻灯片实战教程]

    当演示文稿拥有大量图片时,或者当演示文稿中的图片属于高清图片时,演示文稿的体积往往比较巨大,例如当前演示文稿的体积约为7.8兆. 现在对幻灯片中的图片进行压缩,以对比图片压缩前后的体积变化. 点击格式 ...

最新文章

  1. Java忽略算术溢出,IEEE-754:“最小”溢出条件
  2. mac os 安装 thrift
  3. 深入浅出深度学习(四)概率统计基础
  4. ios传值给js_WKWebView JS与OC间相互传值调用
  5. 华人微型计算机之父,计算机之父是谁?
  6. php关于apache配置,关于PHP和apache的配置
  7. 特斯拉拦不住蔚来取代BBA的心
  8. python 替换重复字符_python – 替换Pandas中的列之间的重复值
  9. XMLReader—一个可以读取XML文件的java类
  10. Tricks(十七) —— 数组与字典(map)
  11. 华研计算机系统苹果用不了,系统瘦身:Apple 苹果 在 macOS Catalina 中取消 Dashboard...
  12. 工业级无线路由器自助设备无线联网
  13. python:实现哥德巴赫猜想
  14. win10应用商店无法联网 0x80072F7D解决方案
  15. 对项目采购管理的分析----合同类型及例题
  16. 20200305沈剑阿里云MVP分享笔记
  17. npm install 报错 C:\Program Files\Git\cmd\git.EXE ls-remote -h -t git://github.com/adobe-webplatform解决
  18. 各种系统中密码文件的位置
  19. 阿米巴经营模式:唤醒员工工作激情与梦想
  20. java常量定义方法_Java常量定义方法汇总

热门文章

  1. U盘装完系统后,不能用,写保护,无法格式化,变为RAW解决办法
  2. 利用爬虫刷CSDN博客访问量
  3. Excel在统计分析中的应用—第二章—描述性统计-Part5-峰度(峰值和矩峰度系数)
  4. 4173: 数学 欧拉函数 思路题
  5. vue中点击高德地图获取经纬度
  6. 物理专业英语词汇(H-N)
  7. ansible中变量注册 register的使用
  8. Latex设置中文标题样式
  9. SOA架构中企业数据总线(ESB)和微服务架构中注册服务管理(dubbo)的区别
  10. DNSPod十问党霏霏:充电桩是披着高科技外皮的传统基建?