C#의 PowerPoint PPT에서 이미지 추출

.NET 응용 프로그램에서 PowerPoint 프레젠테이션을 처리하는 동안 PPT 슬라이드에서 콘텐츠를 추출해야 할 수 있습니다. 내용은 텍스트와 이미지의 형태일 수 있습니다. 이전 게시물에서는 PowerPoint 슬라이드에서 텍스트 추출에 대해 다루었습니다. 이 기사에서는 C#의 PowerPoint PPT 또는 PPTX에서 이미지를 추출하는 방법을 보여줍니다.

PowerPoint PPT에서 이미지를 추출하는 C# .NET API

PowerPoint PPT/PPTX에서 이미지를 추출하기 위해 Aspose.Slides for .NET을 사용합니다. 새로운 프레젠테이션을 만들고 기존 프레젠테이션을 원활하게 조작할 수 있는 기능이 풍부한 .NET API입니다. API의 DLL을 다운로드하거나 NuGet을 사용하여 설치할 수 있습니다.

PM> Install-Package Aspose.Slides.NET

C#의 PowerPoint PPT에서 이미지 추출

다음은 C#에서 PPT 프레젠테이션의 모든 이미지를 추출하는 단계입니다.

  • 먼저 Presentation 클래스를 사용하여 PPT/PPTX 파일을 로드합니다.
  • 그런 다음 Presentation.Images 컬렉션을 사용하여 프레젠테이션의 모든 이미지를 반복합니다.
  • 마지막으로 각 이미지의 유형과 형식을 가져와서 저장합니다.

다음 코드 샘플은 C#의 PowerPoint PPT에서 이미지를 추출하는 방법을 보여줍니다.

// 프레젠테이션 로드
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_";

// 이미지 반복
foreach (var image in pres.Images)
{
    // 이미지 형식 가져오기
    format = GetImageFormat(image.ContentType);

    // 이미지 유형 가져오기
    imageType = image.ContentType;
    imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);

    // 이미지를 저장
    image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
    imageIndex++;
}

PPT의 모양에서 이미지 추출

다양한 경우에 모양 개체에서만 이미지를 추출해야 할 수도 있습니다. 아래 단계에 따라 수행할 수 있습니다.

  • 먼저 Presentation 클래스를 사용하여 프레젠테이션 파일을 로드합니다.
  • 그런 다음 Presentation.Slides 컬렉션을 사용하여 슬라이드를 반복합니다.
  • 각 슬라이드에 대해 ISlide.Shapes 컬렉션을 사용하여 해당 모양에 액세스합니다.
  • 컬렉션의 각 모양에 대해 다음 단계를 수행합니다.

다음 코드 샘플은 C#을 사용하여 PPT의 모양에서 이미지를 추출하는 방법을 보여줍니다.

// 프레젠테이션 로드
Presentation pres = new Presentation("presentation.pptx");

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

// 슬라이드 반복
for (int i = 0; i < pres.Slides.Count; i++)
{
    slideIndex++;
    // 슬라이드에 액세스
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // 모양을 반복
    for (int j = 0; j < slide.Shapes.Count; j++)
    {
        // 도형에 액세스
        IShape sh = slide.Shapes[j];

        // 자동 모양인지 확인하십시오.
        if (sh is AutoShape)
        {
            AutoShape ashp = (AutoShape)sh;

            // 사진이 있는지 확인
            if (ashp.FillFormat.FillType == FillType.Picture)
            {
                // 이미지 가져오기
                img = ashp.FillFormat.PictureFillFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;

            }
        }
        else if (sh is PictureFrame)
        {
            // 모양이 액자라면
            IPictureFrame pf = (IPictureFrame)sh;

            // 사진이 포함되어 있는지 확인
            if (pf.FillFormat.FillType == FillType.Picture)
            {
                // 이미지 가져오기
                img = pf.PictureFormat.Picture.Image;
                imageType = img.ContentType;
                imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
                isImageFound = true;
            }
        }

        // 이미지를 찾으면 저장하십시오
        if (isImageFound)
        {
            format = GetImageFormat(imageType);
            String imagePath = "Image_";
            img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
        }

        isImageFound = false;
    }
}

C#의 슬라이드 배경에서 이미지 추출

또 다른 가능한 시나리오는 슬라이드 배경으로만 사용되는 이미지를 추출하는 것입니다. 다음 단계는 C#에서 슬라이드 배경 이미지를 추출하는 방법을 보여줍니다.

다음 코드 샘플은 C#에서 PPT의 슬라이드 배경에서 이미지를 추출하는 방법을 보여줍니다.

// 프레젠테이션 로드
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++;
    // 슬라이드에 액세스
    ISlide slide = pres.Slides[i];
    System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;

    // 배경에 그림이 있는지 확인
    if (slide.Background.FillFormat.FillType == FillType.Picture)
    {
        // 사진 가져오기  
        backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;

        // 그림 형식 설정 
        imageType = backImg.ContentType;
        imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
        format = GetImageFormat(imageType);

        // 이미지를 저장
        String imagePath = "BackImage_";
        backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
    }
    else
    {
        if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
        {
            // 배경 사진 가져오기  
            backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;

            // 그림 형식 설정 
            imageType = backImg.ContentType;
            imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
            format = GetImageFormat(imageType);

            // 이미지를 저장
            String imagePath = "BackImage_Slide_" + i;
            backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);

        }
    }                
}

위의 모든 코드 조각에서 GetImageFormat 메서드를 사용했습니다. 이 메서드는 제공된 유형에 대한 적절한 이미지 형식을 반환합니다. 이 방법의 구현은 아래에 나와 있습니다.

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

무료 라이선스 받기

평가 제한 없이 Aspose.Slides for .NET을 사용할 수 있는 무료 임시 라이선스를 얻을 수 있습니다.

결론

이 기사에서는 C#의 PowerPoint PPT/PPTX에서 이미지를 추출하는 방법을 배웠습니다. 코드 샘플의 도움으로 모양과 슬라이드 배경에서 이미지를 추출하는 방법을 시연했습니다. 문서를 방문하여 .NET용 Aspose.Slides에 대해 자세히 알아볼 수 있습니다. 또한 포럼을 통해 질문할 수 있습니다.

또한보십시오