Java (482)
Sometimes, it's hard to convey information clearly to your audience with words alone, especially if what you are describing is fairly abstract. Adding images to your PowerPoint presentation can help you describe your meaning in a more understandable way and minimize miscommunication between you and your audience. In some cases, you may also want to extract existing images from a PowerPoint presentation. This article will demonstrate how to add or extract images in PowerPoint in Java using Spire.Presentation for Java.
- Add an Image to a Slide
- Add an Image to Slide Master
- Extract Images from a Slide
- Extract All Images from a PowerPoint Document
Install Spire.Presentation for Java
First of all, you're required to add the Spire.Presentation.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.presentation</artifactId>
<version>11.3.5</version>
</dependency>
</dependencies>
Add an Image to a Slide in Java
Spire.Presentation offers the ISlide.getShapes().appendEmbedImage() method to add an image to a specific slide. The following are the detailed steps:
- Initialize an instance of the Presentation class.
- Load a PowerPoint document using Presentation.loadFromFile() method.
- Get a specific slide by its index using Presentation.getSlides().get(int) method.
- Add an image to the slide using ISlide.getShapes().appendEmbedImage() method.
- Save the result document using Presentation.saveToFile() method.
- Java
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.geom.Rectangle2D;
public class AddImageToSlide {
public static void main(String []args) throws Exception {
//Initialize an instance of the Presentation class
Presentation presentation = new Presentation();
//Load a PowerPoint document
presentation.loadFromFile("Input.pptx");
//Get the first slide
ISlide slide = presentation.getSlides().get(0);
//Add an image to the slide
String imageFile = "image.png";
Rectangle2D.Double rect1 = new Rectangle2D.Double(presentation.getSlideSize().getSize().getWidth() / 2 - 280, 140, 120, 120);
IEmbedImage image = slide.getShapes().appendEmbedImage(ShapeType.RECTANGLE, imageFile, rect1);
image.getLine().setFillType(FillFormatType.NONE);
//Save the result document
presentation.saveToFile("AddImageToSlide.pptx", FileFormat.PPTX_2013);
}
}

Add an Image to Slide Master in Java
A slide master is the top slide that controls all information about the theme, layout, background, color and fonts, which will be inherited by other slides in the presentation. In other words, when you modify the style of the slide master, every slide in the presentation will be changed accordingly, including the ones added later. If you want an image to appear on all your slides, you can add it to one place - the slide master.
Spire.Presentation offers the IMasterSlide.getShapes().appendEmbedImage() method to add an image to a slide master. The following are the detailed steps:
- Initialize an instance of the Presentation class.
- Load a PowerPoint document using Presentation.loadFromFile() method.
- Get a slide master in the document by its index using Presentation.getMasters().get(int) method.
- Add an image to the slide master using IMasterSlide.getShapes().appendEmbedImage() method.
- Save the result document using Presentation.saveToFile() method.
- Java
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.geom.Rectangle2D;
public class AddImageToSlideMaster {
public static void main(String []args) throws Exception {
//Initialize an instance of the Presentation class
Presentation presentation = new Presentation();
//Load a PowerPoint document
presentation.loadFromFile("Sample.pptx");
//Get the first slide master in the document
IMasterSlide master = presentation.getMasters().get(0);
//Add an image to the slide master
String image = "logo.png";
Rectangle2D.Double rect = new Rectangle2D.Double(40, 40, 80, 80);
IEmbedImage pic = master.getShapes().appendEmbedImage(ShapeType.RECTANGLE, image, rect);
pic.getLine().getFillFormat().setFillType(FillFormatType.NONE);
//Add a new slide to the presentation
presentation.getSlides().append();
//Save the result document
presentation.saveToFile("AddImageToSlideMaster.pptx", FileFormat.PPTX_2013);
}
}

Extract Images from a Slide in Java
To extract images from a specific slide, you need to loop through all shapes on the slide, find the shapes that are of SlidePicture or PictureShape type, then call the SlidePicture.getPictureFill().getPicture().getEmbedImage().getImage() or PictureShape.getEmbedImage().getImage() method to retrieve the images. The following are the detailed steps:
- Initialize an instance of the Presentation class.
- Load a PowerPoint document using Presentation.loadFromFile() method.
- Get a specific slide by its index using Presentation.getSlides().get(int) method.
- Loop through all shapes on the slide.
- Check if the shape is of SlidePicture or PictureShape type. If the result is true, retrieve the image using SlidePicture.getPictureFill().getPicture().getEmbedImage().getImage() or PictureShape.getEmbedImage().getImage() method.
- Save the images to PNG files.
- Java
import com.spire.presentation.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class ExtractImageFromSlide {
public static void main(String []args) throws Exception {
//Initialize an instance of the Presentation class
Presentation ppt = new Presentation();
//Load a PowerPoint document
ppt.loadFromFile("Images.pptx");
//Get the first slide
ISlide slide = ppt.getSlides().get(0);
//Loop through all shapes on the slide
for(int i = 0; i< slide.getShapes().getCount(); i++)
{
IShape shape = slide.getShapes().get(i);
//Extract images from the slide
if(shape instanceof SlidePicture)
{
SlidePicture pic = (SlidePicture) shape;
BufferedImage image = pic.getPictureFill().getPicture().getEmbedImage().getImage();
ImageIO.write(image, "PNG", new File(String.format("slide/" + "extractImage-%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("slide/" + "extractImage-%1$s.png", i)));
}
}
}
}

Extract All Images from a PowerPoint document in Java
To extract all images from a PowerPoint document, you can use the Presentation.getImages() method to get the image collection of the document, then loop through the image collection and call ImageCollection.get(int).getImage() method to retrieve the images. The following are the detailed steps:
- Initialize an instance of the Presentation class.
- Load a PowerPoint document using Presentation.loadFromFile() method.
- Get the image collection of the document using the Presentation.getImages() method.
- Loop through the image collection and call ImageCollection.get(int).getImage() method to retrieve the images.
- Save the images to PNG files.
- Java
import com.spire.presentation.Presentation;
import com.spire.presentation.collections.ImageCollection;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class ExtractAllImagesFromPowerPoint {
public static void main(String []args) throws Exception {
//Initialize an instance of the Presentation class
Presentation ppt = new Presentation();
//Load a PowerPoint document
ppt.loadFromFile("Images.pptx");
//Get the image collection of the document
ImageCollection collection = ppt.getImages();
//Loop through the image collection
for (int i = 0; i < collection.getCount(); i++) {
//Retrieve images from the collection
BufferedImage image = collection.get(i).getImage();
ImageIO.write(image, "PNG", new File(String.format("presentation/" + "extractImage-%1$s.png", i)));
}
}
}

Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.
Spire.Presentation for Java is a professional PowerPoint API that enables developers to create, read, write, convert and save PowerPoint documents in Java Applications. As an independent Java library, Spire.Presentation doesn't need Microsoft PowerPoint to be installed on system.
A rich set of features can be supported by Spire.Presentation for Java, such as inserting slides, chart, table, shapes, bullets, watermark, hyperlink, digital signatures, audio/video, header/footer, speaker notes, comments, and encrypting/decrypting PPT, paragraph settings, document properties settings, inserting/extracting images, extracting text, setting animation, creating SmartArt etc.
Text watermark refers to a transparent or translucent logo or information added in the form of text on documents, images or other media. This feature is also applicable to PowerPoint presentations. Overlaying text watermarks on slides helps users identify copyright ownership, protect document security, or convey other information. In this article, we will show you how to add text watermark to PowerPoint slide using Spire.Presentation for Java.
Install Spire.Presentation for Java
First of all, you're required to add the Spire.Presentation.jar file as a dependency in your Java program. The JAR file can be downloaded from this link. If you use Maven, you can easily import the JAR file in your application by adding the following code to your project's pom.xml file.
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.presentation</artifactId>
<version>11.3.5</version>
</dependency>
</dependencies>
Add a Single Text Watermark to Slide
Spire.Presentation for Java supports adding a single text watermark by inserting a shape to slide using Presentation.getSlides().get().getShapes().appendShape() method. And Then set text of it by calling IAutoShape.getTextFrame().setText() method. The following are detailed steps.
- Create a Presentation object and load a sample file using Presentation.loadFromFile() method.
- Set the width and height of watermark string.
- Create a Rectangle2D.Double object and specify the position and size of the rectangle shape by calling Presentation.getSlideSize().getSize().getWidth() and Presentation.getSlideSize().getSize().getHeight() methods.
- Add the rectangle shape to the first slide using Presentation.getSlides().get().getShapes().appendShape() method.
- Set the style of the shape.
- Set text of the shape by using IAutoShape.getTextFrame().setText() and get the specific range using IAutoShape.getTextFrame().getTextRange() method.
- Set the style of the text range.
- Save the result file using Presentation.saveToFile() method.
- Java
import com.spire.presentation.*;
import com.spire.presentation.drawing.FillFormatType;
import java.awt.*;
import java.awt.geom.Rectangle2D;
public class InsertSingleWatermark {
public static void main(String[] args) throws Exception {
//Create a Presentation object and load a sample file
Presentation presentation = new Presentation();
presentation.loadFromFile("sample.pptx");
//Set the width and height of watermark string
int width= 400;
int height= 300;
//Define the position and size of shape
Rectangle2D.Double rect = new Rectangle2D.Double((presentation.getSlideSize().getSize().getWidth() - width) / 2,
(presentation.getSlideSize().getSize().getHeight() - height) / 2, width, height);
//Add the shape to the first slide
IAutoShape shape = presentation.getSlides().get(0).getShapes().appendShape(ShapeType.RECTANGLE, rect);
//Set the style of shape
shape.getFill().setFillType(FillFormatType.NONE);
shape.getShapeStyle().getLineColor().setColor(Color.white);
shape.setRotation(-45);
shape.getLocking().setSelectionProtection(true);
shape.getLine().setFillType(FillFormatType.NONE);
//Add text to shape
shape.getTextFrame().setText("Confidential");
PortionEx textRange = shape.getTextFrame().getTextRange();
//Set the style of the text range
textRange.getFill().setFillType(FillFormatType.SOLID);
textRange.setFontHeight(50);
Color color = new Color(237,129,150,200);
textRange.getFill().getSolidColor().setColor(color);
//Save the result document
presentation.saveToFile("output/SingleWatermark.pptx", FileFormat.PPTX_2010);
presentation.dispose();
}
}

Add a Tiled Text Watermark to Slide
By calling Presentation.getSlides().get().getShapes().appendShape() method multiple times in a loop, multiple rectangle shapes can be added at different positions to achieve the effect of tiled watermarks. The following are detailed steps.
- Create a Presentation object and load a sample file using Presentation.loadFromFile() method.
- Set the text of watermarks and measure the size of the watermark text.
- Initialize x and y coordinate of the watermark. And then add multiple rectangle shapes to slides by calling Presentation.getSlides().get().getShapes().appendShape() method for multiple times in a loop.
- Set the style of the shapes.
- Add text to the shapes by using IAutoShape.getTextFrame().setText() method and get the specific ranges using IAutoShape.getTextFrame().getTextRange() method.
- Set the style of the text ranges.
- Save the result file using Presentation.saveToFile() method.
- Java
import com.spire.presentation.*;
import com.spire.presentation.Presentation;
import com.spire.presentation.drawing.*;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
public class InsertTiledWatermark {
public static void main(String[] args) throws Exception{
//Create a Presentation object and load a sample file
Presentation presentation = new Presentation();
presentation.loadFromFile(""sample.pptx"");
//Set the text of watermarks
String watermarkText = ""Confidential"";
//Measure the size of the watermark text
Image image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = (Graphics2D) image.getGraphics();
Font font = new Font(""Arial"", Font.BOLD, 20);
g2d.setFont(font);
FontMetrics fm = g2d.getFontMetrics();
Rectangle2D strSize = fm.getStringBounds(watermarkText, g2d);
//Initialize x and y coordinate
float x = 30;
float y = 80;
for (int rowNum = 0; rowNum < 4; rowNum++) {
for (int colNum = 0; colNum < 3; colNum++) {
//Add rectangle shapes to the first slide
Rectangle2D rect = new Rectangle2D.Float(x, y, (float) strSize.getWidth() + 10, (float) strSize.getHeight());
IAutoShape shape = presentation.getSlides().get(0).getShapes().appendShape(ShapeType.RECTANGLE, rect);
//Set the style of the shapes
shape.getFill().setFillType(FillFormatType.NONE);
shape.getShapeStyle().getLineColor().setColor(new Color(1, 1, 1, 0));
shape.setRotation(-45);
shape.getLocking().setSelectionProtection(true);
shape.getLine().setFillType(FillFormatType.NONE);
//Add watermark text to the shapes
shape.getTextFrame().setText(watermarkText);
PortionEx textRange = shape.getTextFrame().getTextRange();
//Set the style of the text ranges
textRange.getFill().setFillType(FillFormatType.SOLID);
textRange.setLatinFont(new TextFont(font.getName()));
textRange.setFontMinSize(font.getSize());
Color color = new Color(237,129,150,200);
textRange.getFill().getSolidColor().setColor(color);
x += (100 + strSize.getWidth());
}
x = 30;
y += (100 + strSize.getHeight());
}
//Save the result document
presentation.saveToFile(""output/TiledWatermark.pptx"", FileFormat.PPTX_2013);
presentation.dispose();
}
}

Apply for a Temporary License
If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.


