Extrahujte obrázky z PowerPoint PPT v Javě

V některých případech může být nutné extrahovat obrázky z prezentací PowerPoint spolu s textem. Chcete-li toho dosáhnout, tento článek popisuje, jak extrahovat obrázky z PowerPointu PPT nebo PPTX v Javě. Dozvíte se také, jak extrahovat obrázky pouze z pozadí nebo tvarů ve snímcích PPT.

Java API pro extrahování obrázků z PowerPoint PPT

Aspose.Slides for Java je populární a na funkce bohaté rozhraní API, které vám umožňuje bezproblémově vytvářet a manipulovat s prezentacemi v PowerPointu. Toto API použijeme pro extrahování obrázků ze souborů PPT/PPTX. Můžete si stáhnout JAR API nebo jej nainstalovat pomocí následujících konfigurací Maven.

úložiště:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Závislost:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-slides</artifactId>
    <version>22.1</version>
    <classifier>jdk16</classifier>
</dependency>

Extrahujte obrázky z PowerPoint PPT v Javě

V prezentacích PowerPoint jsou všechny obrázky použité ve snímcích uloženy v kolekci obrázků. Tato kolekce je přístupná a každý obrázek lze uložit jako soubor. Následují kroky k extrahování všech obrázků z prezentace PPT v Javě.

  • Nejprve použijte třídu Presentation k načtení prezentace PPT/PPTX.
  • Poté zpřístupněte kolekci obrázků v prezentaci pomocí metody Presentation.getImages().
  • Nakonec získejte typ a formát každého obrázku a uložte jej.

Následující ukázka kódu ukazuje, jak extrahovat obrázky ze souboru PowerPoint PPTX v jazyce Java.

// Načtěte prezentaci
Presentation pres = new Presentation("presentation.pptx");

int imageIndex = 1;
String imageType = "";
String imagePath = "Image_";

// Procházet obrázky
for (IPPImage image : pres.getImages()) {
  // Získejte typ obrázku
  imageType = image.getContentType();
  imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());

  // Uložit obrázek
  try {
    ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
  } catch (IOException ex) {
    System.out.println(ex.getMessage());
  }
  imageIndex++;
}

Extrahujte obrázky z tvarů PPTX v Javě

Obrázky můžete také extrahovat pouze z tvarů na snímcích PPT. Níže jsou uvedeny kroky, jak toho dosáhnout.

  • Nejprve použijte třídu Presentation k načtení souboru prezentace.
  • Poté použijte metodu Presentation.getSlides() pro přístup ke kolekci snímků.
  • Pro každý snímek zpřístupněte jeho tvary pomocí metody ISlide.getShapes().
  • Pro každý tvar v kolekci proveďte následující kroky:
    • Zkontrolujte, zda je tvar automatický a vyplněný obrázkem, a poté extrahujte jeho obrázek pomocí metody getImage().
    • Zkontrolujte, zda je tvar rámeček obrázku, a poté jeho obrázek extrahujte pomocí metody getImage().
    • Nakonec uložte obrázek jako soubor.

Následující ukázka kódu ukazuje, jak extrahovat obrázky z obrazců v PPT pomocí Java.

// Načtěte prezentaci
Presentation pres = new Presentation("presentation.pptx");

com.aspose.slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
boolean isImageFound = false;

// Procházejte snímky
for (int i = 0; i < pres.getSlides().size(); i++) {
  slideIndex++;

  // Přístupový snímek
  ISlide sl = pres.getSlides().get_Item(i);

 for (int j = 0; j < sl.getShapes().size(); j++) {
    // Přístup k tvaru
    IShape sh = sl.getShapes().get_Item(j);

    // Zkontrolujte, zda se nejedná o automatický tvar
    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;
      }
    }

    // Pokud tvar je rám obrazu
    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;
    }

    // Nastavte požadovaný formát obrazu
    if (isImageFound) {
      try {
        ImageIO.write(img.getSystemImage(), imageType,
            new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
      } catch (IOVýjimka ex) {
        // Výjimka
      }
    }
    isImageFound = false;
  }
}

Extrakce Java obrázků z pozadí snímků PPT

Dalším možným scénářem může být extrahování obrázků, které se používají pouze jako pozadí snímků. Následující kroky ukazují, jak extrahovat obrázky pozadí snímků v Javě.

Následující ukázka kódu ukazuje, jak extrahovat obrázky z pozadí snímků v PPT v Javě.

// Načtěte prezentaci
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++;

  // Přístupový snímek
  ISlide sl = pres.getSlides().get_Item(i);

  // Zkontrolujte, zda je pozadí vyplněno obrázkem
  if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
    // Získejte obrázek na pozadí
    backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();

    // Uložit obrázek
    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) {
      // přečíst zprávu o výjimce
    }
  } else {
    // zkontrolujte, zda má rozložení snímku pozadí obrázku
    if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {

      // Získejte obrázek na pozadí
      backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
          .getImage();

      // Uložit obrázek
      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) {
        // přečíst zprávu o výjimce
      }
    }
  }
}

Java PPT Image Extraction API – Získejte bezplatnou licenci

Aspose nabízí bezplatnou dočasnou licenci k extrahování obrázků z PowerPoint PPT bez omezení hodnocení. Můžete si pořídit jeden pro sebe.

Závěr

V tomto článku jsme si ukázali, jak extrahovat obrázky z PowerPoint PPT/PPTX v Javě. Kromě toho jsme se zabývali tím, jak extrahovat obrázky buď z pozadí tvaru nebo snímku samostatně. Kromě toho si můžete přečíst více o Aspose.Slides pro Java návštěvou dokumentace. Své dotazy můžete také zveřejňovat na našem fóru.

Viz také