Extrahera bilder från PowerPoint PPT i Java

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

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.

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.

Se även