专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java 插入、编辑、提取及删除PowerPoint中的图片

temp10 2024-09-30 00:23:13 java教程 9 ℃ 0 评论

本文将使用Free Spire.Presentation for Java免费控件来介绍如何插入图片到PowerPoint幻灯片中,以及如何编辑、提取和删除幻灯片中已有的图片。

Free Spire.Presentation for Java 是一个专业的PowerPoint API,它允许开发人员在Java应用程序中创建、编辑、读取、转换和保存PowerPoint文档。作为一款独立的Java组件,它的运行环境无需安装Microsoft PowerPoint。

Java 插入、编辑、提取及删除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();
    }
}

删除前后对比图:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表