Bir .NET uygulamasında PowerPoint sunumlarını işlerken, PPT slaytlarından içerik çıkarmanız gerekebilir. İçerik metin ve resim şeklinde olabilir. Önceki gönderide, PowerPoint slaytlarından metin çıkarmayı ele aldık. Bu makalede, C#’ta PowerPoint PPT veya PPTX’ten görüntüleri nasıl çıkaracağınızı göstereceğiz.
- PowerPoint PPT’den Görüntüleri Çıkarmak için C# API’si
- C# dilinde bir PPTX’ten Görüntüleri Çıkarın
- PPT’deki Şekillerden Görüntüleri Çıkarın
- PPT Slayt Arka Planından Görüntü Çıkarma
PowerPoint PPT’den Görüntüleri Çıkarmak için C# API’si - Ücretsiz İndirme
PowerPoint PPT/PPTX’ten görüntüleri ayıklamak için Aspose.Slides for .NET kullanacağız. Yeni sunumlar oluşturmanıza ve mevcut sunumları sorunsuz bir şekilde değiştirmenize izin veren, zengin özelliklere sahip bir .NET API’sidir. API’nin DLL’sini indirebilir veya NuGet kullanarak yükleyebilirsiniz.
PM> Install-Package Aspose.Slides.NET
C# dilinde bir PowerPoint PPT’den Görüntüleri Çıkarın
Aşağıdakiler, C# dilinde bir PPT sunumundaki tüm görüntüleri ayıklama adımlarıdır.
- İlk olarak, PPT/PPTX dosyasını yüklemek için Sunum sınıfını kullanın.
- Ardından, Presentation.Images koleksiyonunu kullanarak sunumdaki tüm görüntüler arasında geçiş yapın.
- Son olarak, her görüntünün türünü ve biçimini alın ve kaydedin.
Aşağıdaki kod örneği, C# dilinde bir PowerPoint PPT’den görüntülerin nasıl çıkarılacağını gösterir.
// sunuyu yükle
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_";
// Görüntüler arasında döngü
foreach (var image in pres.Images)
{
// Resim biçimini al
format = GetImageFormat(image.ContentType);
// Resim türünü al
imageType = image.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
// Resmi Kaydet
image.SystemImage.Save(imagePath + "Slide_" + imageIndex.ToString() + "." + imageType, format);
imageIndex++;
}
Bir PPT’deki Şekillerden Görüntüleri Çıkarın
Çeşitli durumlarda, görüntüleri yalnızca şekil nesnelerinden çıkarmanız gerekebilir. Bu, aşağıdaki adımları izleyerek elde edilebilir.
- İlk olarak, sunum dosyasını yüklemek için Sunum sınıfını kullanın.
- Ardından, slaytlar arasında geçiş yapmak için Presentation.Slides koleksiyonunu kullanın.
- Her slayt için, ISlide.Shapes koleksiyonunu kullanarak şekillerine erişin.
- Koleksiyondaki her şekil için aşağıdaki adımları gerçekleştirin:
- Şekil otomatik bir şekilse ve bir resimle doldurulmuşsa, IShape.FillFormat.PictureFillFormat.Picture.Image özelliğini kullanarak görüntüyü çıkarın.
- Şekil bir resim çerçevesiyse, IPictureFrame.PictureFormat.Picture.Image özelliğini kullanarak görüntüyü çıkarın.
- Son olarak, görüntüyü bir dosya olarak kaydedin.
Aşağıdaki kod örneği, C# kullanarak bir PPT’deki şekillerden görüntülerin nasıl çıkarılacağını gösterir.
// sunuyu yükle
Presentation pres = new Presentation("presentation.pptx");
Aspose.Slides.IPPImage img = null;
int slideIndex = 0;
String imageType = "";
bool isImageFound = false;
// Slaytlar arasında geçiş yapma
for (int i = 0; i < pres.Slides.Count; i++)
{
slideIndex++;
// Slayda erişin
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Şekiller arasında döngü
for (int j = 0; j < slide.Shapes.Count; j++)
{
// Şekle erişin
IShape sh = slide.Shapes[j];
// Bunun bir otomatik şekil olup olmadığını kontrol edin
if (sh is AutoShape)
{
AutoShape ashp = (AutoShape)sh;
// resmi olup olmadığını kontrol edin
if (ashp.FillFormat.FillType == FillType.Picture)
{
// Görüntü almak
img = ashp.FillFormat.PictureFillFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
else if (sh is PictureFrame)
{
// Şekil bir resim çerçevesi ise
IPictureFrame pf = (IPictureFrame)sh;
// Resim içerip içermediğini kontrol edin
if (pf.FillFormat.FillType == FillType.Picture)
{
// Görüntü almak
img = pf.PictureFormat.Picture.Image;
imageType = img.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
isImageFound = true;
}
}
// Resim bulunursa kaydedin
if (isImageFound)
{
format = GetImageFormat(imageType);
String imagePath = "Image_";
img.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "_Shape_" + j.ToString() + "." + imageType, format);
}
isImageFound = false;
}
}
PPTX Slayt Arka Planlarından C# Görüntü Çıkarma
Başka bir olası senaryo, yalnızca slayt arka planı olarak kullanılan görüntüleri çıkarmak olabilir. Aşağıdaki adımlar, C# dilinde slayt arka plan resimlerinin nasıl çıkarılacağını gösterir.
- İlk olarak, Sunum sınıfını kullanarak PPT/PPTX dosyasını yükleyin.
- Ardından, Presentation.Slides koleksiyonunu kullanarak sunumdaki slaytlar arasında geçiş yapın.
- Her slayt için aşağıdaki adımları gerçekleştirin:
- ISlide.Background.FillFormat.FillType özelliğini kullanarak slaydın arka plan resmi olup olmadığını kontrol edin.
- Arka planda resim varsa, Background.FillFormat.PictureFillFormat.Picture.Image özelliğini kullanarak görüntüyü çıkarın.
- LayoutSlide.Background.FillFormat.FillType özelliğini kullanarak düzen slaydının arka plan resmi olup olmadığını kontrol edin.
- Düzen slaytının arka planı bir resimle doluysa, ISlide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image özelliğini kullanarak ayıklayın.
- Son olarak, çıkarılan görüntüyü bir dosya olarak kaydedin.
Aşağıdaki kod örneği, C# dilinde bir PPT’de slayt arka planlarından görüntülerin nasıl çıkarılacağını gösterir.
// sunuyu yükle
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++;
// Slayda erişin
ISlide slide = pres.Slides[i];
System.Drawing.Imaging.ImageFormat format = System.Drawing.Imaging.ImageFormat.Jpeg;
// Arka planda resim olup olmadığını kontrol edin
if (slide.Background.FillFormat.FillType == FillType.Picture)
{
// resim al
backImg = slide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Resim biçimini ayarla
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Resmi Kaydet
String imagePath = "BackImage_";
backImg.SystemImage.Save(imagePath + "Slide_" + slideIndex.ToString() + "." + imageType, format);
}
else
{
if (slide.LayoutSlide.Background.FillFormat.FillType == FillType.Picture)
{
// Arka plan resmini al
backImg = slide.LayoutSlide.Background.FillFormat.PictureFillFormat.Picture.Image;
// Resim biçimini ayarla
imageType = backImg.ContentType;
imageType = imageType.Remove(0, imageType.IndexOf("/") + 1);
format = GetImageFormat(imageType);
// Resmi Kaydet
String imagePath = "BackImage_Slide_" + i;
backImg.SystemImage.Save(imagePath + "LayoutSlide_" + slideIndex.ToString() + "." + imageType, format);
}
}
}
Yukarıdaki kod parçacıklarının hepsinde GetImageFormat yöntemini kullandık. Bu yöntem, sağlanan tür için uygun görüntü formatını döndürür. Bu yöntemin uygulanışı aşağıda verilmiştir.
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 Görüntü Çıkarma API’sı - Ücretsiz Lisans Alın
Aspose.Slides for .NET’i değerlendirme sınırlamaları olmadan kullanmak için ücretsiz geçici lisans alabilirsiniz.
Çözüm
Bu makalede, C# dilinde PowerPoint PPT’den görüntülerin nasıl çıkarılacağını öğrendiniz. Kod örneklerinin yardımıyla şekillerden ve slayt arka planlarından görüntülerin nasıl çıkarılacağını gösterdik. belgeleri ziyaret ederek Aspose.Slides for .NET hakkında daha fazlasını keşfedebilirsiniz. Ayrıca sorularınızı forumumuz aracılığıyla da sorabilirsiniz.