Android'de Sunum Slaytlarını Görüntülere Dönüştürme
Giriş
Aspose.Slides for Android via Java, PowerPoint ve OpenDocument sunumlarından tek tek slaytları PNG, JPEG, GIF, TIFF ve diğer görüntü formatları olarak oluşturabilir.
Bir slaytı görüntüye dönüştürmek için aşağıdaki adımları izleyin:
- Sunumu, Presentation sınıfı ile yükleyin.
- Renderlamak istediğiniz slaytı seçin.
- Gerekirse, renderlamayı RenderingOptions veya TiffOptions sınıfları ile yapılandırın.
- ISlide.getImage metodunu çağırın. Bu metod bir IImage nesnesi döndürür.
- IImage.save metodunu çağırın ve çıkış formatını bir ImageFormat değeriyle belirtin.
Bir Slaytı PNG Görüntüsü Olarak Dönüştürme
En basit dönüşüm, varsayılan render ayarlarını kullanır. Oluşan IImage nesnesi bellek içinde işlenebilir veya bir dosyaya kaydedilebilir.
Aşağıdaki Java örneği ilk slaytı renderlar ve PNG görüntüsü olarak kaydeder:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage();
try {
image.save("Slide_0.png", ImageFormat.Png);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Özel Boyutlarla Slaytları Görüntülere Dönüştürme
Bir slaytı tam piksel boyutlarıyla renderlamak için, bir Size değerini kabul eden ISlide.getImage aşırı yüklemesini kullanın.
Aşağıdaki örnek 1820 × 1040 JPEG görüntüsü oluşturur:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import com.aspose.slides.android.Size;
Size imageSize = new Size(1820, 1040);
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(imageSize);
try {
image.save("Slide_0.jpg", ImageFormat.Jpeg);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Notlar ve Yorumlarla Slaytları Görüntülere Dönüştürme
Varsayılan olarak, slayt görüntüleri notları veya yorumları içermez. Notların ve yorumların nerede görüneceğini kontrol etmek için bir NotesCommentsLayoutingOptions nesnesini RenderingOptions.setSlidesLayoutOptions metoduna gönderin.
Aşağıdaki örnek, kesilmiş notları slaytın altına ve yorumları sağ tarafına yerleştirir:
import android.graphics.Color;
import com.aspose.slides.CommentsPositions;
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.NotesCommentsLayoutingOptions;
import com.aspose.slides.NotesPositions;
import com.aspose.slides.Presentation;
import com.aspose.slides.RenderingOptions;
float scaleX = 2f;
float scaleY = scaleX;
int commentsAreaColor = Color.rgb(250, 235, 215);
NotesCommentsLayoutingOptions layoutOptions = new NotesCommentsLayoutingOptions();
layoutOptions.setNotesPosition(NotesPositions.BottomTruncated);
layoutOptions.setCommentsPosition(CommentsPositions.Right);
layoutOptions.setCommentsAreaWidth(500);
layoutOptions.setCommentsAreaColor(commentsAreaColor);
RenderingOptions renderingOptions = new RenderingOptions();
renderingOptions.setSlidesLayoutOptions(layoutOptions);
Presentation presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(renderingOptions, scaleX, scaleY);
try {
image.save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Uyarı
Slayt‑görsel dönüşümü için, BottomFull metoduna NotesCommentsLayoutingOptions.setNotesPosition metoduna geçmeyin. Notlar, sabit görüntü boyutunun alabileceğinden daha fazla metin içerebilir. Bunun yerine BottomTruncated kullanın.TIFF Seçenekleri Kullanarak Slaytları Görüntülere Dönüştürme
TiffOptions sınıfı, renderlanmış TIFF görüntüsünün boyutunu, çözünürlüğünü ve diğer özelliklerini kontrol etmenizi sağlar.
Aşağıdaki örnek ilk slaytı 2160 × 2880 TIFF görüntüsü olarak 300 DPI’de renderlar:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
import com.aspose.slides.TiffOptions;
import com.aspose.slides.android.Size;
Size imageSize = new Size(2160, 2880);
TiffOptions tiffOptions = new TiffOptions();
tiffOptions.setImageSize(imageSize);
tiffOptions.setDpiX(300);
tiffOptions.setDpiY(300);
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IImage image = slide.getImage(tiffOptions);
try {
image.save("output.tiff", ImageFormat.Tiff);
} finally {
image.dispose();
}
} finally {
presentation.dispose();
}
Tüm Slaytları Görüntülere Dönüştürme
Sunumdaki tüm slaytları bir dizi görüntüye dönüştürmek için slayt koleksiyonunu yineleyin. Gizli slaytlar, açıkça atlamadığınız sürece dahil edilir.
Aşağıdaki örnek, her slaytı yatay ve dikey ölçek faktörleri 2 olan bir JPEG görüntüsü olarak renderlar:
import com.aspose.slides.IImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ImageFormat;
import com.aspose.slides.Presentation;
float scaleX = 2f;
float scaleY = scaleX;
Presentation presentation = new Presentation("Presentation.pptx");
try {
int slideCount = presentation.getSlides().size();
for (int index = 0; index < slideCount; index++) {
ISlide slide = presentation.getSlides().get_Item(index);
IImage image = slide.getImage(scaleX, scaleY);
try {
image.save("Slide_" + index + ".jpg", ImageFormat.Jpeg);
} finally {
image.dispose();
}
}
} finally {
presentation.dispose();
}
Geliştirilmiş Metafile Çıktısı Oluşturma
Geliştirilmiş Metafile (EMF), vektör tabanlı grafiklerin Microsoft Office veya Windows metafilleri destekleyen diğer Windows uygulamalarıyla değiş tokuş edilmesi gerektiğinde faydalıdır. Piksel tabanlı bir görüntünün aksine, EMF ölçeklendiğinde aynı keskinlik kaybını yaşamadan vektörel çizim işlemlerini koruyabilir. Ancak EMF, esas olarak Windows metafili desteği olan uygulamalar için bir uyumluluk formatıdır, evrensel bir değişim formatı değildir. Buna ek olarak, bitmap görüntüler ve bazı efektler gibi karmaşık slayt içeriği, vektörel metafile konteyneri içinde rasterleştirilmiş öğeler olarak depolanabilir.
Bir Slaytı EMF’ye Dışa Aktarma
ISlide.writeAsEmf metodu, bir ISlide nesnesini EMF formatında hedef akışa yazar. Aşağıdaki örnek bir sunumu yükler, ilk slaytı seçer ve onu bir EMF dosya akışına yazar:
import com.aspose.slides.ISlide;
import com.aspose.slides.Presentation;
import java.io.FileOutputStream;
Presentation presentation = new Presentation("Presentation.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
FileOutputStream emfStream = new FileOutputStream("Slide_0.emf");
try {
slide.writeAsEmf(emfStream);
} finally {
emfStream.close();
}
} finally {
presentation.dispose();
}
Yukarıdaki gibi, ISlide.writeAsEmf metoduna geçirilen akışa çağıran sahiptir ve akışı kapatmakla sorumludur.
SVG Görüntüsünü EMF’ye Dönüştürme ve Sunuma Ekleme
ISvgImage.writeAsEmf kullanarak SVG içeriğini EMF’ye dönüştürün. Oluşan baytlar, IImageCollection.addImage ile sunuma eklenebilir ve IShapeCollection.addPictureFrame ile bir slayta yerleştirilebilir.
Aşağıdaki örnek SVG işaretlemesinden bir SvgImage oluşturur, bellek içinde bir EMF’ye dönüştürür, metafile’i ilk slayta ekler ve sunumu kaydeder:
import com.aspose.slides.IPPImage;
import com.aspose.slides.ISlide;
import com.aspose.slides.ISvgImage;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import com.aspose.slides.ShapeType;
import com.aspose.slides.SvgImage;
import java.io.ByteArrayOutputStream;
String svgContent = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>";
ISvgImage svgImage = new SvgImage(svgContent);
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
ByteArrayOutputStream emfStream = new ByteArrayOutputStream();
try {
svgImage.writeAsEmf(emfStream);
byte[] emfData = emfStream.toByteArray();
IPPImage image = presentation.getImages().addImage(emfData);
slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image);
} finally {
emfStream.close();
}
presentation.save("Presentation_with_emf.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
ISvgImage.writeAsEmf hedef akışının sahipliğini almaz. Bir ByteArrayOutputStream tüm üretilen veriyi bellekte saklar, bu yüzden toByteArray çağrılmadan önce konum sıfırlamaya gerek yoktur. Döndürülen bayt dizisi akış kapatıldıktan sonra da geçerliliğini korur.
EMF oluşturma, desteklenen Android sürümlerinde ve cihaz yapılandırmalarında kullanılabilir, ancak yazı tipleri veya grafik bağımlılıkları mevcut değilse renderlama farklılık gösterebilir. Kaynak içeriğin kullandığı yazı tiplerini kurun veya uygun ikameler yapılandırın, Aspose.Slides for Android via Java için kurulum kılavuzunu izleyin ve hedef EMF‑kullanan uygulamada sonucu doğrulayın. Windows dışı platformlardaki uygulamalar genellikle Windows metafillerinin görüntülenmesi ve düzenlenmesi konusunda sınırlı ya da tutarsız destek sunar.
Renkli Emoji Renderlama
Not
Sunum slaytlarını görüntülere dönüştürürken renkli emoji’lerin doğru renderlanması için, sunumda kullanılan emoji yazı tiplerinin dönüşüm yapan sistemde kurulu ve erişilebilir olması gerekir. Örneğin, sunum Segoe UI Emoji yazı tipini kullanıyorsa ve bu yazı tipi eksikse, emoji’ler çıktı görüntülerinde tek renkli görünebilir.SSS
Aspose.Slides animasyonlu slaytları renderlamayı destekliyor mu?
Hayır. ISlide.getImage metodu, slaytın statik bir görüntüsünü renderlar ve animasyonları dışa aktarmaz.
Gizli slaytlar görüntü olarak dışa aktarılabilir mi?
Evet. Gizli slaytlar normal slaytlar gibi renderlanabilir. Yukarıdaki örnekte gösterildiği gibi işleme döngüsüne dahil edin.
Slayt görüntülerinde gölgeler ve diğer efektler korunuyor mu?
Evet. Aspose.Slides, slayt görüntülerinde gölgeler, şeffaflık ve diğer desteklenen grafik efektlerini renderlar.