Durante l’elaborazione delle presentazioni PowerPoint in un’applicazione .NET, potrebbe essere necessario estrarre il contenuto dalle diapositive PPT. Il contenuto potrebbe essere sotto forma di testo e immagini. Nel post precedente, abbiamo trattato l’estrazione del testo dalle diapositive di PowerPoint. In questo articolo, ti mostreremo come estrarre immagini da PowerPoint PPT o PPTX in C#.
- API .NET per estrarre immagini dalle presentazioni
- Estrai immagini da una presentazione PPTX in C#
- Estrai immagini dalle forme
- Estrazione dell’immagine dallo sfondo della diapositiva
API C# .NET per estrarre immagini da PowerPoint PPT
Per estrarre immagini da PowerPoint PPT/PPTX, utilizzeremo Aspose.Slides for .NET. È un’API .NET ricca di funzionalità che ti consente di creare nuove presentazioni e manipolare quelle esistenti senza problemi. Puoi scaricare la DLL dell’API o installarla utilizzando NuGet.
PM> Install-Package Aspose.Slides.NET
Estrai immagini da un PPT di PowerPoint in C#
Di seguito sono riportati i passaggi per estrarre tutte le immagini in una presentazione PPT in C#.
- Per prima cosa, usa la classe Presentazione per caricare il file PPT/PPTX.
- Quindi, scorrere tutte le immagini nella presentazione utilizzando la raccolta Presentation.Images.
- Infine, ottieni il tipo e il formato di ciascuna immagine e salvala.
Nell’esempio di codice seguente viene illustrato come estrarre immagini da un PPT di PowerPoint in C#.
// Carica la presentazione
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
int imageIndex = 1;
string imageType = "";
String imagePath = "Image_";
// Scorri le immagini
foreach (var image in pres.Images)
{
// Ottieni formato immagine
format = GetImageFormat(image.ContentType);
// Ottieni tipo di immagine
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// Salva immagine
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
Estrai immagini dalle forme in un PPT
In vari casi, potrebbe essere necessario estrarre immagini solo dagli oggetti forma. Questo può essere ottenuto seguendo i passaggi seguenti.
- Per prima cosa, usa la classe Presentazione per caricare il file di presentazione.
- Quindi, usa la raccolta Presentation.Slides per scorrere le diapositive.
- Per ogni diapositiva, accedi alle sue forme usando la raccolta ISlide.Shapes.
- Eseguire i seguenti passaggi per ciascuna forma nella raccolta:
- Se la forma è una forma automatica ed è riempita con un’immagine, estrai l’immagine utilizzando la proprietà IShape.FillFormat.PictureFillFormat.Picture.Image.
- Se la forma è una cornice immagine, estrarre l’immagine utilizzando la proprietà IPictureFrame.PictureFormat.Picture.Image.
- Infine, salva l’immagine come file.
L’esempio di codice seguente mostra come estrarre immagini dalle forme in un PPT usando C#.
// Carica la presentazione
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// Passa attraverso le diapositive
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Accedi alla diapositiva
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Passa attraverso le forme
for (int j = 0; j < slide.Shapes.Count; j++)
{
// Accedi alla forma
IShape sh = slide.Shapes[j];
// Controlla che sia una forma automatica
if (sh is AutoShape)
{
AutoShape ashp = (AutoShape)sh;
// Controlla se ha un'immagine
if (ashp.FillFormat.FillType == FillType.Picture)
{
// Ottieni immagine
img = ashp.FillFormat.PictureFillFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
else if (sh is PictureFrame)
{
// Se la forma è una cornice
IPictureFrame pf = (IPictureFrame)sh;
// Controlla se contiene un'immagine
if (pf.FillFormat.FillType == FillType.Picture)
{
// Ottieni immagine
img = pf.PictureFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
// Se l'immagine viene trovata, salvala
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
Estrai immagini dagli sfondi delle diapositive in C#
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 C#.
- Innanzitutto, carica il file PPT/PPTX utilizzando la classe Presentazione.
- Quindi, scorrere le diapositive nella presentazione utilizzando la raccolta Presentation.Slides.
- Per ogni diapositiva, attenersi alla seguente procedura:
- Controlla se la diapositiva ha un’immagine di sfondo usando la proprietà ISlide.Background.FillFormat.FillType.
- Se lo sfondo ha un’immagine, estrai l’immagine utilizzando la proprietà Background.FillFormat.PictureFillFormat.Picture.Image.
- Verifica se la diapositiva del layout ha un’immagine di sfondo utilizzando la proprietà LayoutSlide.Background.FillFormat.FillType.
- Se lo sfondo della diapositiva del layout è riempito con un’immagine, estrarla utilizzando la proprietà ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image.
- Infine, salva l’immagine estratta come file.
L’esempio di codice seguente mostra come estrarre immagini dagli sfondi delle diapositive in un PPT in C#.
// Carica la presentazione
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage backImg = null;
int slideIndex = 0;
String imageType = "";
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Accedi alla diapositiva
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Controlla se lo sfondo ha un'immagine
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// Ottieni una foto
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Imposta il formato dell'immagine
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Salva immagine
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// Ottieni un'immagine di sfondo
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Imposta il formato dell'immagine
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Salva immagine
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
Abbiamo usato il metodo GetImageFormat in tutti i frammenti di codice sopra. Questo metodo restituisce il formato immagine appropriato per il tipo fornito. L’implementazione di questo metodo è data di seguito.
public static System.Drawing.Imaging.ImageFormat GetImageFormat(String ImageType)
{
System.Drawing.Imaging.ImageFormat Format = System.Drawing.Imaging.ImageFormat.Jpeg;
switch (ImageType)
{
case "jpeg":
Format = System.Drawing.Imaging.ImageFormat.Jpeg;
break;
case "emf":
Format = System.Drawing.Imaging.ImageFormat.Emf;
break;
case "bmp":
Format = System.Drawing.Imaging.ImageFormat.Bmp;
break;
case "png":
Format = System.Drawing.Imaging.ImageFormat.Png;
break;
case "wmf":
Format = System.Drawing.Imaging.ImageFormat.Wmf;
break;
case "gif":
Format = System.Drawing.Imaging.ImageFormat.Gif;
break;
}
return Format;
}
Ottieni una licenza gratuita
Puoi ottenere una licenza temporanea gratuita per utilizzare Aspose.Slides per .NET senza limitazioni di valutazione.
Conclusione
In questo articolo, hai imparato come estrarre immagini da PowerPoint PPT/PPTX in C#. Con l’aiuto di esempi di codice, abbiamo dimostrato come estrarre immagini da forme e sfondi di diapositive. Puoi esplorare di più su Aspose.Slides per .NET visitando la documentazione. Inoltre, puoi porre le tue domande tramite il nostro forum.