I vissa fall kan du behöva extrahera bilder från PowerPoint-presentationer tillsammans med texten. För att uppnå det tar den här artikeln upp hur man extraherar bilder från PowerPoint PPT eller PPTX i Java. Du kommer också att lära dig att extrahera bilder endast från bakgrunderna eller formerna i PPT-bilder.
- Java API för att extrahera bilder från PowerPoint PPT
- Extrahera bilder från en PPT i Java
- Extrahera bilder från former i PPTX
- Bildextraktion från PPT-bildbakgrund
Java API för att extrahera bilder från PowerPoint PPT
Aspose.Slides for Java är ett populärt och funktionsrikt API som låter dig skapa och manipulera PowerPoint-presentationer sömlöst. Vi kommer att använda detta API för att extrahera bilder från PPT/PPTX-filer. Du kan antingen ladda ner API:s JAR eller installera den med följande Maven-konfigurationer.
Förvar:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Beroende:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-slides</artifactId>
<version>22.1</version>
<classifier>jdk16</classifier>
</dependency>
Extrahera bilder från en PowerPoint PPT i Java
I PowerPoint-presentationer lagras alla bilder som används i bilderna i en bildsamling. Denna samling kan nås och varje bild kan sparas som en fil. Följande är stegen för att extrahera alla bilder i en PPT-presentation i Java.
- Använd först klassen Presentation för att ladda PPT/PPTX-presentationen.
- Gå sedan till bildsamlingen i presentationen med metoden Presentation.getImages().
- Slutligen, skaffa typ och format för varje bild och spara den.
Följande kodexempel visar hur man extraherar bilder från en PowerPoint PPTX-fil i Java.
// Ladda presentationen
Presentation pres = new Presentation("presentation.pptx");
int imageIndex = 1;
String imageType = "";
String imagePath = "Image_";
// Gå igenom bilder
for (IPPImage image : pres.getImages()) {
// Hämta bildtyp
imageType = image.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
// Spara bild
try {
ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
imageIndex++;
}
Extrahera bilder från PPTX Shapes i Java
Du kan också extrahera bilder endast från formerna i PPT-bilderna. Följande är stegen för att uppnå det.
- Använd först klassen Presentation för att ladda presentationsfilen.
- Använd sedan metoden Presentation.getSlides() för att komma åt bildsamlingen.
- För varje bild kommer du åt dess former med metoden ISlide.getShapes().
- Utför följande steg för varje form i samlingen:
- Kontrollera om formen är en automatisk form och fylld med en bild och extrahera sedan dess bild med metoden getImage().
- Kontrollera om formen är en bildram och extrahera sedan dess bild med metoden getImage().
- Slutligen sparar du bilden som en fil.
Följande kodexempel visar hur man extraherar bilder från former i en PPT med Java.
// Ladda presentationen
Presentation pres = new Presentation("presentation.pptx");
com.aspose.slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
boolean isImageFound = false;
// Slinga genom diabilder
for (int i = 0; i < pres.getSlides().size(); i++) {
slideIndex++;
// Åtkomst rutschkana
ISlide sl = pres.getSlides().get_Item(i);
for (int j = 0; j < sl.getShapes().size(); j++) {
// Få tillgång till formen
IShape sh = sl.getShapes().get_Item(j);
// Kontrollera om det är en autoform
if (sh instanceof IAutoShape) {
IAutoShape ashp = (IAutoShape) sh;
if (ashp.getFillFormat().getFillType() == FillType.Picture) {
img = ashp.getFillFormat().getPictureFillFormat().getPicture().getImage();
imageType = img.getContentType();
imageType = imageType.substring(0, imageType.indexOf("/") + 1);
isImageFound = true;
}
}
// Om formen är en bildram
else if (sh instanceof IPictureFrame) {
IPictureFrame pf = (IPictureFrame) sh;
img = pf.getPictureFormat().getPicture().getImage();
imageType = img.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
isImageFound = true;
}
// Ställ in önskat bildformat
if (isImageFound) {
try {
ImageIO.write(img.getSystemImage(), imageType,
new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
} catch (IOUndantag ex) {
// Undantag
}
}
isImageFound = false;
}
}
Java-bildextraktion från PPT Slide-bakgrunder
Ett annat möjligt scenario kan vara att extrahera bilder som endast används som bildbakgrunder. Följande steg visar hur man extraherar bildbakgrundsbilder i Java.
Ladda först presentationen med klassen Presentation.
Gå sedan igenom bilderna i presentationen med metoden Presentation.getSlides().
Utför följande steg för varje bild:
Kontrollera om bilden har en bakgrundsbild med metoden ISlide.getBackground().getFillFormat().getFillType().
Om bakgrunden har bild, extrahera bilden med metoden getImage().
Kontrollera om layoutbilden har en bakgrundsbild med metoden ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType().
Om layoutbildens bakgrund är fylld med en bild, extrahera den med metoden getImage().
Slutligen, spara den extraherade bilden som en fil.
Följande kodexempel visar hur man extraherar bilder från bildbakgrunder i en PPT i Java.
// Ladda presentationen
Presentation pres = new Presentation("presentation.pptx");
com.aspose.slides.IPPImage img = null;
com.aspose.slides.IPPImage backImage = null;
String ImagePath = "BackImage_";
int slideIndex = 0;
String imageType = "";
for (int i = 0; i < pres.getSlides().size(); i++) {
slideIndex++;
// Åtkomst rutschkana
ISlide sl = pres.getSlides().get_Item(i);
// Kontrollera om bakgrunden är fylld med bild
if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
// Hämta bakgrundsbilden
backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();
// Spara bild
BufferedImage image = backImage.getSystemImage();
imageType = backImage.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
try {
ImageIO.write(image, imageType,
new File(ImagePath + "Slide_" + slideIndex + "." + imageType.toString()));
} catch (IOException ex) {
// läs undantagsmeddelande
}
} else {
// kontrollera om bildlayouten har bildbakgrund
if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {
// Hämta bakgrundsbilden
backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
.getImage();
// Spara bild
BufferedImage image = backImage.getSystemImage();
imageType = backImage.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
try {
ImageIO.write(image, imageType,
new File(ImagePath + "LayoutSlide_" + slideIndex + "." + imageType.toString()));
} catch (IOException ex) {
// läs undantagsmeddelande
}
}
}
}
Java PPT Image Extraction API - Skaffa en gratis licens
Aspose erbjuder en gratis tillfällig licens för att extrahera bilder från PowerPoint PPT utan utvärderingsbegränsningar. Du kan skaffa en själv.
Slutsats
I den här artikeln har vi visat hur man extraherar bilder från PowerPoint PPT/PPTX i Java. Dessutom har vi behandlat hur man extraherar bilder antingen från formen eller bildbakgrunderna separat. Dessutom kan du läsa mer om Aspose.Slides för Java genom att besöka dokumentationen. Du kan också skicka dina frågor till vårt forum.