Wyodrębnij obrazy z PowerPoint PPT w C#

Podczas przetwarzania prezentacji programu PowerPoint w aplikacji .NET może być konieczne wyodrębnienie zawartości ze slajdów PPT. Treść może mieć postać tekstu i obrazów. W poprzednim poście omówiliśmy wyodrębnianie tekstu ze slajdów programu PowerPoint. W tym artykule pokażemy, jak wyodrębnić obrazy z programu PowerPoint PPT lub PPTX w języku C#.

Interfejs API języka C# do wyodrębniania obrazów z programu PowerPoint PPT — bezpłatne pobieranie

Do wyodrębniania obrazów z programu PowerPoint PPT/PPTX użyjemy Aspose.Slides for .NET. Jest to bogaty w funkcje interfejs API .NET, który umożliwia tworzenie nowych prezentacji i bezproblemowe manipulowanie istniejącymi. Możesz pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.

PM> Install-Package Aspose.Slides.NET

Wyodrębnij obrazy z PowerPoint PPT w C#

Poniżej przedstawiono kroki, aby wyodrębnić wszystkie obrazy w prezentacji PPT w języku C#.

  • Najpierw użyj klasy Presentation, aby załadować plik PPT/PPTX.
  • Następnie przejrzyj wszystkie obrazy w prezentacji, korzystając z kolekcji Presentation.Images.
  • Na koniec uzyskaj typ i format każdego obrazu i zapisz go.

Poniższy przykładowy kod pokazuje, jak wyodrębnić obrazy z programu PowerPoint PPT w języku C#.

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

// Zapętlaj obrazy
foreach (var image in pres.Images)
{
    // Pobierz format obrazu
    format = GetImageFormat(image.ContentType);

    // Pobierz typ obrazu
    imageType = image.ContentType;
    imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);

    // Zapisać obraz
    image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
    imageIndex++;
}

Wyodrębnij obrazy z kształtów w PPT

W różnych przypadkach może być konieczne wyodrębnienie obrazów tylko z obiektów kształtu. Można to osiągnąć, wykonując poniższe czynności.

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

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

Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;

// Zapętlaj slajdy
for (int i = 0; i < pres.Slides.Count; i++)
{
    slideIndex++;
    // Uzyskaj dostęp do slajdu
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Zapętlaj kształty
   for (int j = 0; j < slide.Shapes.Count; j++)
    {
        // Uzyskaj dostęp do kształtu
        IShape sh = slide.Shapes[j];

        // Sprawdź, czy jest to kształt automatyczny
        if (sh is AutoShape)
        {
            AutoShape ashp = (AutoShape)sh;

            // Sprawdź, czy ma obraz
            if (ashp.FillFormat.FillType == FillType.Picture)
            {
                // Uzyskaj obraz
                img = ashp.FillFormat.PictureFillFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;

            }
        }
        else if (sh is PictureFrame)
        {
            // Jeśli kształt jest ramką obrazu
            IPictureFrame pf = (IPictureFrame)sh;

            // Sprawdź, czy zawiera obrazek
            if (pf.FillFormat.FillType == FillType.Picture)
            {
                // Uzyskaj obraz
                img = pf.PictureFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;
            }
        }

        // Jeśli obraz zostanie znaleziony, zapisz go
        if (isImageFound)
        {
            format = GetImageFormat(imageType);
            String imagePath = "Image_";
            img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
        }

        isImageFound = false;
    }
}

Wyodrębnianie obrazu C# z tła slajdu PPTX

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 slajdu w języku C#.

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

// Załaduj prezentację
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++;
    // Uzyskaj dostęp do slajdu
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // Sprawdź, czy w tle jest obrazek
    if (slide.Background.FillFormat.FillType == FillType.Picture)
    {
        // Uzyskaj obraz  
        backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;

        // Ustaw format obrazu 
        imageType = backImg.ContentType;
        imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
        format = GetImageFormat(imageType);

        // Zapisać obraz
        String imagePath = "BackImage_";
        backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
    }
    else
    {
        if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
        {
            // Uzyskaj obraz tła  
            backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;

            // Ustaw format obrazu 
            imageType = backImg.ContentType;
            imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
            format = GetImageFormat(imageType);

            // Zapisać obraz
            String imagePath = "BackImage_Slide_" + i;
            backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);

        }
    }                
}

Użyliśmy metody GetImageFormat we wszystkich powyższych fragmentach kodu. Ta metoda zwraca odpowiedni format obrazu dla podanego typu. Implementację tej metody przedstawiono poniżej.

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;
}

C# PowerPoint PPT API wyodrębniania obrazu — Uzyskaj bezpłatną licencję

Możesz uzyskać darmową tymczasową licencję na korzystanie z Aspose.Slides for .NET bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule nauczyłeś się, jak wyodrębnić obrazy z programu PowerPoint PPT w języku C#. Za pomocą przykładów kodu pokazaliśmy, jak wyodrębnić obrazy z kształtów i tła slajdów. Możesz dowiedzieć się więcej o Aspose.Slides for .NET, odwiedzając dokumentację. Możesz także zadawać pytania za pośrednictwem naszego forum.

Zobacz też