网站首页 > 精选教程 正文
本文将使用Free Spire.Presentation for Java免费控件来介绍如何插入图片到PowerPoint幻灯片中,以及如何编辑、提取和删除幻灯片中已有的图片。
Free Spire.Presentation for Java 是一个专业的PowerPoint API,它允许开发人员在Java应用程序中创建、编辑、读取、转换和保存PowerPoint文档。作为一款独立的Java组件,它的运行环境无需安装Microsoft PowerPoint。
Jar文件获取及导入
在运行代码前,需将Jar包导入IDEA中。导入方式有两种:其一,在E-iceblue中文官网上下载Free Spire.Presentation for Java产品包,解压后将lib文件夹下的Spire.Presentation.jar手动导入IDEA;其二,在IDEA中创建一个Maven项目,然后在pom.xml文件下键入以下代码,最后点击“Import Changes”即可。
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.presentation.free</artifactId>
<version>3.9.0</version>
</dependency>
</dependencies>
代码示例
示例1 插入图片到PowerPoint幻灯片中
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.geom.Rectangle2D;
public class InsertImages {
public static void main(String[] args) throws Exception {
//创建Presentation实例
Presentation ppt = new Presentation();
Rectangle2D rect = new Rectangle2D.Double(ppt.getSlideSize().getSize().getWidth() / 2 - 280, 140, 300, 250);
//获取第一张幻灯片(创建后默认含有一张幻灯片)
ISlide slide = ppt.getSlides().get(0);
//插入图片到幻灯片
IEmbedImage image = slide.getShapes().appendEmbedImage(ShapeType.RECTANGLE, "C:\\Users\\Test1\\Desktop\\Image1.jpg", rect);
image.getLine().setFillType(FillFormatType.NONE);
//添加一张新的幻灯片
slide = ppt.getSlides().append();
//插入图片到幻灯片
image = slide.getShapes().appendEmbedImage(ShapeType.RECTANGLE, "C:\\Users\\Test1\\Desktop\\Image2.png", rect);
image.getLine().setFillType(FillFormatType.NONE);
//保存文档
ppt.saveToFile("output/InsertImages.pptx", FileFormat.PPTX_2013);
}
}
效果图:
示例2 编辑PowerPoint幻灯片中的图片
import com.spire.presentation.*;
public class EditImage {
public static void main(String[] args) throws Exception {
//创建实例,加载PPT测试文档
Presentation ppt = new Presentation();
ppt.loadFromFile("C:\\Users\\Test1\\Desktop\\InsertImages.pptx");
//获取第一张幻灯片
ISlide slide = ppt.getSlides().get(0);
//遍历幻灯片中的形状
for( int i = 0; i< slide.getShapes().getCount();i++){
IShape shape = slide.getShapes().get(i);
//设置图片高、宽、位置、旋转、可选文本、像素、名称等
if(shape instanceof SlidePicture){
SlidePicture pic = (SlidePicture) shape;
pic.setHeight(270);
pic.setWidth(400);
pic.setAlternativeText("原始图片文件");
pic.setAlternativeTitle("标题1");
pic.setRotation(30);
pic.setLeft(200);
pic.setTop(150);
pic.setName("图片1");
pic.getPictureFill().getPicture().setTransparency(60);
}
}
//保存文档
ppt.saveToFile("output/ModifyImage.pptx",FileFormat.PPTX_2013);
ppt.dispose();
}
}
编辑前后对比图:
示例3 提取Powerpoint幻灯片中的图片
情况1:提取所有幻灯片中的图片
import com.spire.presentation.Presentation;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class ExtractImages {
public static void main(String[] args) throws Exception {
//创建Presentation实例
Presentation ppt = new Presentation();
//加载PowerPoint文档
ppt.loadFromFile("C:\\Users\\Test1\\Desktop\\InsertImages.pptx");
//提取文档中的所有图片
for (int i = 0; i < ppt.getImages().getCount(); i++) {
BufferedImage image = ppt.getImages().get(i).getImage();
ImageIO.write(image, "PNG", new File(String.format("output/" + "extractImage-%1$s.png", i)));
}
}
}
提取效果:
情况2 提取指定幻灯片中的图片
import com.spire.presentation.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class ExtractSpecifiedImage {
public static void main(String[] args) throws Exception {
//创建Presentation实例
Presentation ppt = new Presentation();
//加载PowerPoint文档
ppt.loadFromFile("C:\\Users\\Test1\\Desktop\\InsertImages.pptx");
//获取第一张幻灯片
ISlide slide = ppt.getSlides().get(0);
//提取图片
for(int i = 0; i< slide.getShapes().getCount(); i++)
{
IShape shape = slide.getShapes().get(i);
if(shape instanceof SlidePicture)
{
SlidePicture pic = (SlidePicture) shape;
BufferedImage image = pic.getPictureFill().getPicture().getEmbedImage().getImage();
ImageIO.write(image, "PNG", new File(String.format("output/" + "extractSpecifiedImage-%1$s.png", i)));
}
if(shape instanceof PictureShape)
{
PictureShape ps = (PictureShape) shape;
BufferedImage image = ps.getEmbedImage().getImage();
ImageIO.write(image, "PNG", new File(String.format("output/" + "extractSpecifiedImage-%1$s.png", i)));
}
}
}
}
提取效果:
示例4 删除PowerPoint幻灯片中的图片
import com.spire.presentation.*;
public class DeleteImages {
public static void main(String[] args) throws Exception {
//加载PPT文档
Presentation ppt = new Presentation();
ppt.loadFromFile("C:\\Users\\Test1\\Desktop\\InsertImages.pptx");
//获取指定幻灯片
ISlide slide = ppt.getSlides().get(1);
//遍历幻灯片中的形状
for( int i = 0; i< slide.getShapes().getCount();i++){
IShape shape = slide.getShapes().get(i);
//删除图片
if(shape instanceof SlidePicture){
SlidePicture pic = (SlidePicture) shape;
slide.getShapes().remove(pic);
}
}
//保存文档
ppt.saveToFile("output/DeleteImages.pptx", FileFormat.PPTX_2013);
ppt.dispose();
}
}
删除前后对比图:
- 上一篇: Java 图像处理(一)
- 下一篇: java读取照片信息
猜你喜欢
- 2024-11-25 干货|一文搞定 uiautomator2 自动化测试工具使用
- 2024-11-25 Java去除PDF文件中的图片
- 2024-11-25 2021 年 Node.js 开发人员学习路线图
- 2024-11-25 Java之base64转化成图片文件
- 2024-11-25 wangEditor 实现ctrl+v粘贴图片并上传、word粘贴带图片
- 2024-11-25 姐姐带我玩转java设计模式(内附照片)- 代理模式
- 2024-11-25 base64转化为图片
- 2024-11-25 Java 给Excel图表设置背景颜色和背景图片
- 2024-11-25 一个支持将html转为PDF、图片,且支持PDF加水印的项目
- 2024-11-25 使用SpringBoot Schedule实现定时任务动态添加、修改、删除等操作
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)