الواجهة الحديثة
المقدمة
تاريخيًا، Aspose Slides لديها اعتماد على java.awt وتحتوي الواجهة العامة على الفئات التالية من هناك:
اعتبارًا من الإصدار 24.4، تم إعلان أن هذه الواجهة العامة مهجورة.
للتخلص من الاعتماد على هذه الفئات، أضفنا ما يُسمى “الواجهة الحديثة” – أي الواجهة التي يجب استخدامها بدلاً من الواجهة المهجورة، والتي تحتوي توقيعاتها على اعتماد على BufferedImage. تم إعلان Graphics2D مهجور وتم إزالة دعمه من الواجهة العامة لــ Slides.
سيتم إزالة الواجهة العامة المهجورة التي تعتمد على System.Drawing في الإصدار 24.8.
الواجهة الحديثة
تم إضافة الفئات والعدادات التالية إلى الواجهة العامة:
- IImage - تمثل الصورة النقطية أو المتجهة.
- ImageFormat - تمثل تنسيق ملف الصورة.
- Images - طرق لإنشاء والعمل مع فئة IImage.
يرجى ملاحظة أن IImage قابل للتصرف (يُطبق الواجهة IDisposable ويجب ارتكاب استخدامه داخل using أو التخلص منه بطريقة مناسبة أخرى).
قد يبدو سيناريو نمطي لاستخدام الواجهة الجديدة كما يلي:
var pres = new aspose.slides.Presentation();
try {
var ppImage;
// إنشاء نسخة قابلة للتصرف من IImage من الملف الموجود على القرص.
var image = aspose.slides.Images.fromFile("image.png");
try {
// إنشاء صورة PowerPoint بإضافة نسخة من IImage إلى صور العرض التقديمي.
ppImage = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// إضافة شكل صورة على الشريحة رقم 1
pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
var size = java.newInstanceSync("java.awt.Dimension", 1920, 1080);
// الحصول على نسخة من IImage تمثل الشريحة رقم 1.
var slideImage = pres.getSlides().get_Item(0).getImage(size);
try {
// حفظ الصورة على القرص.
slideImage.save("slide1.jpeg", aspose.slides.ImageFormat.Jpeg);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
استبدال الشيفرة القديمة بالواجهة الحديثة
بشكل عام، ستحتاج إلى استبدال استدعاء الطريقة القديمة التي تستخدم ImageIO بالطريقة الجديدة.
القديمة:
var imageio = java.import("javax.imageio.ImageIO");
var size = java.newInstanceSync("java.awt.Dimension", 1920, 1080);
var slideImage = pres.getSlides().get_Item(0).getThumbnail(size);
var file = java.newInstanceSync("java.io.File", "image.png");
imageio.write(slideImage, "PNG", file);
الجديدة:
var size = java.newInstanceSync("java.awt.Dimension", 1920, 1080);
var slideImage = pres.getSlides().get_Item(0).getImage(size);
slideImage.save("image.png", aspose.slides.ImageFormat.Png);
slideImage.dispose();
الحصول على صورة مصغرة للشريحة
الشيفرة التي تستخدم واجهة مهجورة:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var slideImage = pres.getSlides().get_Item(0).getThumbnail();
var imageio = java.import("javax.imageio.ImageIO");
var file = java.newInstanceSync("java.io.File", "slide1.png");
imageio.write(slideImage, "PNG", file);
} finally {
if (pres != null) pres.dispose();
}
الواجهة الحديثة:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var slideImage = pres.getSlides().get_Item(0).getImage();
slideImage.save("slide1.png", aspose.slides.ImageFormat.Png);
slideImage.dispose();
} finally {
if (pres != null) pres.dispose();
}
الحصول على صورة مصغرة للشكل
الشيفرة التي تستخدم واجهة مهجورة:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var shapeImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getThumbnail();
var imageio = java.import("javax.imageio.ImageIO");
var file = java.newInstanceSync("java.io.File", "shape.png");
imageio.write(shapeImage, "PNG", file);
} finally {
if (pres != null) pres.dispose();
}
الواجهة الحديثة:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var shapeImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage();
shapeImage.save("shape.png");
shapeImage.dispose();
} finally {
if (pres != null) pres.dispose();
}
الحصول على صورة مصغرة للعرض التقديمي
الشيفرة التي تستخدم واجهة مهجورة:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var size = java.newInstanceSync("java.awt.Dimension", 1980, 1028);
var bitmaps = pres.getThumbnails(new aspose.slides.RenderingOptions(), size);
for (var index = 0; index < bitmaps.length; index++)
{
var thumbnail = bitmaps[index];
var imageio = java.import("javax.imageio.ImageIO");
var file = java.newInstanceSync("java.io.File", "slide" + index + ".png");
imageio.write(thumbnail, "PNG", file);
}
} finally {
if (pres != null) pres.dispose();
}
الواجهة الحديثة:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var size = java.newInstanceSync("java.awt.Dimension", 1980, 1028);
var images = pres.getImages(new aspose.slides.RenderingOptions(), size);
try
{
for (var index = 0; index < images.length; index++)
{
var thumbnail = images[index];
thumbnail.save("slide" + index + ".png", aspose.slides.ImageFormat.Png);
}
}
finally
{
images.forEach(item => {item.dispose();});
}
} finally {
if (pres != null) pres.dispose();
}
إضافة صورة إلى العرض التقديمي
الشيفرة التي تستخدم واجهة مهجورة:
var pres = new aspose.slides.Presentation();
try {
var imageio = java.import("javax.imageio.ImageIO");
var file = java.newInstanceSync("java.io.File", "image.png");
var bufferedImages = imageio.read(file);
var ppImage = pres.getImages().addImage(bufferedImages);
pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
} finally {
if (pres != null) pres.dispose();
}
الواجهة الحديثة:
var pres = new aspose.slides.Presentation();
try {
var image = aspose.slides.Images.fromFile("image.png");
var ppImage = pres.getImages().addImage(image);
image.dispose();
pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
} finally {
if (pres != null) pres.dispose();
}
الطرق التي سيتم إزالتها واستبدالها في الواجهة الحديثة
Presentation
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| public final BufferedImage[] getThumbnails(IRenderingOptions options) | public final IImage[] getImages(IRenderingOptions options) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, float scaleX, float scaleY) | public final IImage[] getImages(IRenderingOptions options, float scaleX, float scaleY) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides) | public final IImage[] getImages(IRenderingOptions options, int[] slides) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides, float scaleX, float scaleY) | public final IImage[] getImages(IRenderingOptions options, int[] slides, float scaleX, float scaleY) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides, Dimension imageSize) | public final IImage[] getImages(IRenderingOptions options, int[] slides, Dimension imageSize) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, Dimension imageSize) | public final IImage[] getImages(IRenderingOptions options, Dimension imageSize) |
Shape
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| public final BufferedImage getThumbnail() | public final IImage getImage() |
| public final BufferedImage getThumbnail(int bounds, float scaleX, float scaleY) | public final IImage getImage(int bounds, float scaleX, float scaleY) |
Slide
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| public final BufferedImage getThumbnail() | public final IImage getImage() |
| public final BufferedImage getThumbnail(float scaleX, float scaleY) | public final IImage getImage(float scaleX, float scaleY) |
| public final BufferedImage getThumbnail(IRenderingOptions options) | public final IImage getImage(IRenderingOptions options) |
| public final BufferedImage getThumbnail(IRenderingOptions options, float scaleX, float scaleY) | public final IImage getImage(IRenderingOptions options) |
| public final BufferedImage getThumbnail(IRenderingOptions options, Dimension imageSize) | public final IImage getImage(IRenderingOptions options, Dimension imageSize) |
| public final BufferedImage getThumbnail(ITiffOptions options) | public final IImage getImage(ITiffOptions options) |
| public final BufferedImage getThumbnail(Dimension imageSize) | public final IImage getImage(Dimension imageSize) |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics) | Will be deleted completely |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, float scaleX, float scaleY) | Will be deleted completely |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, Dimension renderingSize) | Will be deleted completely |
Output
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| public final IOutputFile add(String path, BufferedImage image) | public final IOutputFile add(String path, IImage image) |
ImageCollection
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| public final PPImage addImage(BufferedImage image) | public final PPImage addImage(IImage image) |
PPImage
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| public final BufferedImage getSystemImage() | public final IImage getImage() |
PatternFormat
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| public final BufferedImage getTileImage(Color styleColor) | public final IImage getTile(Color styleColor) |
| public final BufferedImage getTileImage(Color background, Color foreground) | public final IImage getTile(Color background, Color foreground) |
PatternFormatEffectiveData
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| public final java.awt.image.BufferedImage getTileImage(Color background, Color foreground) | public final IImage getTileIImage(Color background, Color foreground) |
سيتم إيقاف دعم Graphics2D في الواجهة البرمجية
الطرق التي تستخدم Graphics2D تم الإعلان عن أنها مهجورة وسيتم إزالة دعمها من الواجهة العامة.
الجزء من الواجهة الذي يستخدمها سيُزال:
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics)
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, float scaleX, float scaleY)
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, Dimension renderingSize)
الأسئلة المتكررة
ما الفائدة العملية من IImage مقارنةً بـ Image/Bitmap؟
IImage يوحد التعامل مع الصور النقطية والمتجهة ويسهل حفظها بصيغ متعددة عبر ImageFormat.
هل ستؤثر الواجهة الحديثة على أداء إنشاء الصور المصغرة؟
التحويل من getThumbnail إلى getImage لا ي ухудшает السيناريوهات: الطرق الجديدة توفر نفس القدرات لإنتاج الصور مع الخيارات والأحجام، مع الحفاظ على دعم خيارات العرض. المكسب أو الفقدان المحدد يعتمد على السيناريو، لكن من الناحية الوظيفية البدائل متكافئة.