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
- Extrahujte obrázky z PPT v Javě
- Extrahujte obrázky z Shapes v PPTX
- Extrakce obrázku z pozadí snímku 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ě.
Nejprve načtěte prezentaci pomocí třídy Presentation.
Poté procházejte snímky v prezentaci pomocí metody Presentation.getSlides().
Pro každý snímek proveďte následující kroky:
Pomocí metody ISlide.getBackground().getFillFormat().getFillType() zkontrolujte, zda snímek obsahuje obrázek na pozadí.
Pokud má pozadí obrázek, extrahujte obrázek pomocí metody getImage().
Pomocí metody ISlide.getLayoutSlide().getBackground().getFillFormat().getFillType() zkontrolujte, zda má snímek rozvržení obrázek na pozadí.
Pokud je pozadí rozvržení snímku vyplněno obrázkem, extrahujte jej pomocí metody getImage().
Nakonec uložte extrahovaný obrázek jako soubor.
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.