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
- Wyodrębnij obrazy z PPT w Javie
- Wyodrębnij obrazy z kształtów w PPTX
- Ekstrakcja obrazu z tła slajdu 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.
Najpierw załaduj prezentację za pomocą klasy Presentation.
Następnie przejrzyj slajdy w prezentacji za pomocą metody Presentation.getSlides().
Dla każdego slajdu wykonaj następujące czynności:
Sprawdź, czy slajd ma obraz tła, używając metody ISlide.getBackground().getFillFormat().getFillType().
Jeśli tło ma obraz, wyodrębnij obraz za pomocą metody getImage().
Sprawdź, czy slajd layoutu ma obraz tła, używając metody ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType().
Jeśli tło slajdu układu jest wypełnione obrazem, wyodrębnij go za pomocą metody getImage().
Na koniec zapisz wyodrębniony obraz jako plik.
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.