
In alcuni casi, potrebbe essere necessario estrarre le immagini dalle presentazioni PowerPoint insieme al testo. Per raggiungere questo obiettivo, questo articolo illustra come estrarre immagini da PowerPoint PPT o PPTX a livello di codice in Java. Imparerai anche come estrarre immagini solo dagli sfondi o dalle forme nelle diapositive PPT.
- API Java per estrarre immagini da PowerPoint PPT
- Estrai immagini da una presentazione PPT in Java
- Estrai immagini dalle forme
- Estrazione dell’immagine dallo sfondo della diapositiva
API Java per estrarre immagini da PowerPoint PPT
Aspose.Slides for Java è un’API popolare e ricca di funzionalità che consente di creare e manipolare presentazioni PowerPoint senza interruzioni. Useremo questa API per estrarre immagini da file PPT/PPTX. Puoi scaricare il JAR dell’API o installarlo utilizzando le seguenti configurazioni Maven.
Archivio:
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
Dipendenza:
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-slides</artifactId>
<version>22.1</version>
<classifier>jdk16</classifier>
</dependency>
Estrai immagini da un PowerPoint PPT in Java
Nelle presentazioni PowerPoint, tutte le immagini utilizzate nelle diapositive vengono archiviate in una raccolta di immagini. È possibile accedere a questa raccolta e salvare ogni immagine come file. Di seguito sono riportati i passaggi per estrarre tutte le immagini in una presentazione PPT in Java.
- Per prima cosa, usa la classe Presentazione per caricare la presentazione PPT/PPTX.
- Quindi, accedi alla raccolta di immagini nella presentazione utilizzando il metodo Presentation.getImages().
- Infine, ottieni il tipo e il formato di ciascuna immagine e salvala.
L’esempio di codice seguente mostra come estrarre immagini da un file PPTX di PowerPoint in Java.
// Carica la presentazione
Presentation pres = new Presentation("presentation.pptx");
int imageIndex = 1;
String imageType = "";
String imagePath = "Image_";
// Scorri le immagini
for (IPPImage image : pres.getImages()) {
// Ottieni tipo di immagine
imageType = image.getContentType();
imageType = imageType.substring(imageType.indexOf("/") + 1, imageType.length());
// Salva immagine
try {
ImageIO.write(image.getSystemImage(), imageType, new File(imagePath + imageIndex + "." + imageType.toString()));
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
imageIndex++;
}
Estrai immagini dalle forme in un PPT
Puoi anche estrarre immagini solo dalle forme nelle diapositive PPT. Di seguito sono riportati i passaggi per farlo.
- Per prima cosa, usa la classe Presentazione per caricare il file di presentazione.
- Quindi, usa il metodo Presentation.getSlides() per accedere alla raccolta di diapositive.
- Per ogni diapositiva, accedi alle sue forme usando il metodo ISlide.getShapes().
- Eseguire i seguenti passaggi per ciascuna forma nella raccolta:
- Controlla se la forma è una forma automatica e riempita con un’immagine, quindi estrai la sua immagine usando il metodo getImage().
- Controlla se la forma è una cornice, quindi estrai la sua immagine usando il metodo getImage().
- Infine, salva l’immagine come file.
L’esempio di codice seguente mostra come estrarre immagini dalle forme in un PPT utilizzando Java.
// Carica la presentazione
Presentation pres = new Presentation("presentation.pptx");
com.aspose.slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
boolean isImageFound = false;
// Passa attraverso le diapositive
for (int i = 0; i < pres.getSlides().size(); i++) {
slideIndex++;
// Accedi alla diapositiva
ISlide sl = pres.getSlides().get_Item(i);
for (int j = 0; j < sl.getShapes().size(); j++) {
// Accedi alla forma
IShape sh = sl.getShapes().get_Item(j);
// Controlla se è una forma automatica
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;
}
}
// Se la forma è una cornice
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;
}
// Impostare il formato immagine desiderato
if (isImageFound) {
try {
ImageIO.write(img.getSystemImage(), imageType,
new File("Slide_" + slideIndex + "_Shape_" + j + "." + imageType));
} catch (IOEccezione ex) {
// Eccezione
}
}
isImageFound = false;
}
}
Estrai le immagini dagli sfondi delle diapositive in Java
Un altro possibile scenario potrebbe essere l’estrazione di immagini che vengono utilizzate solo come sfondi per le diapositive. I passaggi seguenti mostrano come estrarre le immagini di sfondo delle diapositive in Java.
Per prima cosa, carica la presentazione usando la classe Presentazione.
Quindi, scorrere le diapositive nella presentazione utilizzando il metodo Presentation.getSlides().
Per ogni diapositiva, attenersi alla seguente procedura:
Controlla se la diapositiva ha un’immagine di sfondo usando il metodo ISlide.getBackground().getFillFormat().getFillType().
Se lo sfondo ha un’immagine, estrai l’immagine usando il metodo getImage().
Controlla se la diapositiva del layout ha un’immagine di sfondo usando il metodo ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType().
Se lo sfondo della diapositiva del layout è riempito con un’immagine, estrarla utilizzando il metodo getImage().
Infine, salva l’immagine estratta come file.
L’esempio di codice seguente mostra come estrarre immagini dagli sfondi delle diapositive in un PPT in Java.
// Carica la presentazione
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++;
// Accedi alla diapositiva
ISlide sl = pres.getSlides().get_Item(i);
// Controlla se lo sfondo è pieno di immagini
if (sl.getBackground().getFillFormat().getFillType() == FillType.Picture) {
// Ottieni l'immagine di sfondo
backImage = sl.getBackground().getFillFormat().getPictureFillFormat().getPicture().getImage();
// Salva immagine
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) {
// leggi il messaggio di eccezione
}
} else {
// controlla se il layout della diapositiva ha lo sfondo dell'immagine
if (sl.getLayoutSlide().getBackground().getFillFormat().getFillType() == FillType.Picture) {
// Ottieni l'immagine di sfondo
backImage = sl.getLayoutSlide().getBackground().getFillFormat().getPictureFillFormat().getPicture()
.getImage();
// Salva immagine
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) {
// leggi il messaggio di eccezione
}
}
}
}
Ottieni una licenza gratuita
Aspose offre una licenza temporanea gratuita per utilizzare Aspose.Slides per Java senza limitazioni di valutazione. Puoi prenderne uno per te.
Conclusione
In questo articolo, abbiamo dimostrato come estrarre immagini da PowerPoint PPT/PPTX in Java. Inoltre, abbiamo spiegato come estrarre le immagini dalla forma o dagli sfondi delle diapositive separatamente. Inoltre, puoi leggere di più su Aspose.Slides per Java visitando la documentazione. Inoltre, puoi inviare le tue domande al nostro forum.