Wyodrębnij obrazy z PowerPoint PPT w Javie

W niektórych przypadkach może być konieczne wyodrębnienie obrazów z prezentacji programu PowerPoint wraz z tekstem. Aby to osiągnąć, w tym artykule opisano, jak programowo wyodrębnić obrazy z programu PowerPoint PPT lub PPTX w Javie. Dowiesz się również, jak wyodrębniać obrazy tylko z tła lub kształtów na slajdach PPT.

Java API do wyodrębniania obrazów z programu PowerPoint PPT

Aspose.Slides for Java to popularny i bogaty w funkcje interfejs API, który umożliwia bezproblemowe tworzenie prezentacji PowerPoint i manipulowanie nimi. Będziemy używać tego interfejsu API do wyodrębniania obrazów z plików PPT/PPTX. Możesz pobrać JAR API lub zainstalować go przy użyciu następujących konfiguracji Mavena.

Magazyn:

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

Zależność:

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

Wyodrębnij obrazy z PowerPoint PPT w Javie

W prezentacjach programu PowerPoint wszystkie obrazy użyte na slajdach są przechowywane w kolekcji obrazów. Dostęp do tej kolekcji można uzyskać, a każdy obraz można zapisać jako plik. Poniżej przedstawiono kroki, aby wyodrębnić wszystkie obrazy w prezentacji PPT w Javie.

  • Najpierw użyj klasy Presentation, aby załadować prezentację PPT/PPTX.
  • Następnie uzyskaj dostęp do kolekcji obrazów w prezentacji za pomocą metody Presentation.getImages().
  • Na koniec uzyskaj typ i format każdego obrazu i zapisz go.

Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z pliku PowerPoint PPTX w Javie.

// Załaduj prezentację
Presentation pres = new Presentation("presentation.pptx");

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

// Zapętlaj obrazy
for (IPPImage image : pres.getImages()) {
  // Pobierz typ obrazu
  imageType = image.getContentType();
  imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());

  // Zapisać obraz
  try {
    ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
  } catch (IOException ex) {
    System.out.println(ex.getMessage());
  }
  imageIndex++;
}

Wyodrębnij obrazy z kształtów PPTX w Javie

Możesz także wyodrębnić obrazy tylko z kształtów na slajdach PPT. Oto kroki, aby to osiągnąć.

  • Najpierw użyj klasy Presentation, aby załadować plik prezentacji.
  • Następnie użyj metody Presentation.getSlides(), aby uzyskać dostęp do kolekcji slajdów.
  • Dla każdego slajdu uzyskaj dostęp do jego kształtów za pomocą metody ISlide.getShapes().
  • Wykonaj następujące kroki dla każdego kształtu w kolekcji:
    • Sprawdź, czy kształt jest auto-kształtem i wypełniony obrazkiem, a następnie wyodrębnij jego obraz za pomocą metody getImage().
    • Sprawdź, czy kształt jest ramką obrazu, a następnie wyodrębnij jej obraz za pomocą metody getImage().
    • Na koniec zapisz obraz jako plik.

Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z kształtów w PPT przy użyciu języka Java.

// Załaduj prezentację
Presentation pres = new Presentation("presentation.pptx");

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

// Zapętlaj slajdy
for (int i = 0; i < pres.getSlides().size(); i++) {
  slideIndex++;

  // Dostęp do slajdu
  ISlide sl = pres.getSlides().get_Item(i);

 for (int j = 0; j < sl.getShapes().size(); j++) {
    // Uzyskaj dostęp do kształtu
    IShape sh = sl.getShapes().get_Item(j);

    // Sprawdź, czy jest to kształt automatyczny
    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;
      }
    }

    // Jeśli kształt jest ramką 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;
    }

    // Ustaw żądany format obrazu
    if (isImageFound) {
      try {
        ImageIO.write(img.getSystemImage(), imageType,
            new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
      } catch (IOWyjątek ex) {
        // Wyjątek
      }
    }
    isImageFound = false;
  }
}

Ekstrakcja obrazu Java z tła slajdów PPT

Innym możliwym scenariuszem może być wyodrębnianie obrazów, które są używane tylko jako tła slajdów. Poniższe kroki pokazują, jak wyodrębnić obrazy tła slajdów w Javie.

Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z tła slajdów w PPT w Javie.

// Załaduj prezentację
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++;

  // Dostęp do slajdu
  ISlide sl = pres.getSlides().get_Item(i);

  // Sprawdź, czy tło jest wypełnione obrazem
  if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
    // Pobierz obraz tła
    backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();

    // Zapisz obraz
    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) {
      // przeczytaj komunikat o wyjątku
    }
  } else {
    // sprawdź, czy układ slajdów ma tło obrazu
    if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {

      // Pobierz obraz tła
      backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
          .getImage();

      // Zapisać obraz
      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) {
        // przeczytaj komunikat o wyjątku
      }
    }
  }
}

Interfejs API wyodrębniania obrazów programu Java PowerPoint — uzyskaj bezpłatną licencję

Aspose oferuje bezpłatną tymczasową licencję na używanie Aspose.Slides for Java bez ograniczeń ewaluacyjnych. Możesz kupić jeden dla siebie.

Wniosek

W tym artykule pokazaliśmy, jak wyodrębnić obrazy z programu PowerPoint PPT/PPTX w Javie. Ponadto omówiliśmy, jak wyodrębnić obrazy z kształtu lub tła slajdów osobno. Poza tym możesz przeczytać więcej o Aspose.Slides dla Javy, odwiedzając dokumentację. Możesz także zamieścić swoje zapytania na naszym forum.

Zobacz też