تحسين معالجة الصور باستخدام واجهة برمجة التطبيقات الحديثة
المقدمة
يعتمد Aspose.Slides for Python API العام حاليًا على الأنواع التالية من aspose.pydrawing:
aspose.pydrawing.Graphicsaspose.pydrawing.Imageaspose.pydrawing.Bitmapaspose.pydrawing.printing.PrinterSettings
اعتبارًا من الإصدار 24.4، تم إهمال هذا API العام بسبب التغييرات في Aspose.Slides for Python API العام.
لإزالة aspose.pydrawing من الـ API العام، قدمنا الـ API الحديث. الأساليب التي تستخدم aspose.pydrawing.Image وaspose.pydrawing.Bitmap قد تم إهمالها وسيتم استبدالها بنظيراتها في الـ API الحديث. الأساليب التي تستخدم aspose.pydrawing.Graphics قد تم إهمالها، وسيُزال الدعم لها من الـ API العام.
من المخطط إزالة الـ API المُهمَل الذي يعتمد على aspose.pydrawing في الإصدار 24.8.
الـ API الحديث
تمت إضافة الفئات والعدادات التالية إلى الـ API العام:
aspose.slides.IImage— تمثّل صورة نقطية أو متجهة.aspose.slides.ImageFormat— تمثّل صيغة ملف الصورة.aspose.slides.Images— توفر أساليب لإنشاء والعمل معIImage.
سيناريو الاستخدام النموذجي للـ API الجديد هو كما يلي:
import aspose.slides as slides
import aspose.pydrawing as drawing
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with slides.Images.from_file("image.png") as image:
pp_image = presentation.images.add_image(image)
slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, pp_image)
with slide.get_image(drawing.Size(1920, 1080)) as slide_image:
slide_image.save("slide1.jpeg", slides.ImageFormat.JPEG)
استبدال الكود القديم بالـ API الحديث
للتسهيل في الانتقال، يطابق واجهة IImage الجديدة الـ API المنفصل للفئات Image وBitmap. في معظم الحالات، كل ما عليك هو استبدال الاستدعاءات التي تستخدم aspose.pydrawing بنظيراتها في الـ API الحديث.
الحصول على صورة مصغرة للشريحة
الـ API المُهمَل:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
slide.get_thumbnail().save("slide1.png")
الـ API الحديث:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
with slide.get_image() as image:
image.save("slide1.png")
الحصول على صورة مصغرة للشكل
الـ API المُهمَل:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
shape = presentation.slides[0].shapes[0]
shape.get_thumbnail().save("shape.png")
الـ API الحديث:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
shape = presentation.slides[0].shapes[0]
with shape.get_image() as image:
image.save("shape.png")
الحصول على صورة مصغرة للعرض التقديمي
الـ API المُهمَل:
import aspose.slides as slides
import aspose.pydrawing as drawing
with slides.Presentation("sample.pptx") as presentation:
thumbnails = presentation.get_thumbnails(slides.export.RenderingOptions(), drawing.Size(1980, 1028))
for index, thumbnail in enumerate(thumbnails):
thumbnail.save(f"slide_{index}.png", drawing.imaging.ImageFormat.png)
الـ API الحديث:
import aspose.slides as slides
import aspose.pydrawing as drawing
with slides.Presentation("sample.pptx") as presentation:
thumbnails = presentation.get_images(slides.export.RenderingOptions(), drawing.Size(1980, 1028))
for index, thumbnail in enumerate(thumbnails):
thumbnail.save(f"slide_{index}.png", slides.ImageFormat.PNG)
إضافة صورة إلى عرض تقديمي
الـ API المُهمَل:
import aspose.slides as slides
import aspose.pydrawing as drawing
with slides.Presentation() as presentation:
slide = presentation.slides[0]
image = drawing.Image.from_file("image.png")
pp_image = presentation.images.add_image(image)
slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, pp_image)
الـ API الحديث:
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with slides.Images.from_file("image.png") as image:
pp_image = presentation.images.add_image(image)
slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, pp_image)
الطرق والخصائص التي سيتم إزالتها واستبدالاتها في الـ API الحديث
فئة Presentation
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| get_thumbnails(options) | get_images(options) |
| get_thumbnails(options, slides) | get_images(options, slides) |
| get_thumbnails(options, scale_x, scale_y) | get_images(options, scale_x, scale_y) |
| get_thumbnails(options, slides, scale_x, scale_y) | get_images(options, slides, scale_x, scale_y) |
| get_thumbnails(options, image_size) | get_images(options, image_size) |
| get_thumbnails(options, slides, image_size) | get_images(options, slides, image_size) |
| save(fname, format, response, show_inline) | سيتم حذفها تمامًا |
| save(fname, format, options, response, show_inline) | سيتم حذفها تمامًا |
| print() | سيتم حذفها تمامًا |
| print(printer_settings) | سيتم حذفها تمامًا |
| print(printer_name) | سيتم حذفها تمامًا |
| print(printer_settings, pres_name) | سيتم حذفها تمامًا |
فئة Slide
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| get_thumbnail() | get_image() |
| get_thumbnail(scale_x, scale_y) | get_image(scale_x, scale_y) |
| get_thumbnail(image_size) | get_image(image_size) |
| get_thumbnail(options) | get_image(options: ITiffOotions) |
| get_thumbnail(options) | get_image(options: IRenderingOptions) |
| get_thumbnail(options, scale_x, scale_y) | get_image(options, scale_x, scale_y) |
| get_thumbnail(options, image_size) | get_image(options, image_size) |
| render_to_graphics(options, graphics) | سيتم حذفها تمامًا |
| render_to_graphics(options, graphics, scale_x, scale_y) | سيتم حذفها تمامًا |
| render_to_graphics(options, graphics, rendering_size) | سيتم حذفها تمامًا |
فئة Shape
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| get_thumbnail() | get_image() |
| get_thumbnail(bounds, scale_x, scale_y) | get_image(bounds, scale_x, scale_y) |
فئة ImageCollection
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| add_image(image: aspose.pydrawing.Image) | add_image(image) |
فئة PPImage
| توقيع الطريقة/الخاصية | توقيع طريقة/خاصية الاستبدال |
|---|---|
| replace_image(new_image: aspose.pydrawing.Image) | replace_image(new_image) |
| system_image | image |
فئة ImageWrapperFactory
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| create_image_wrapper(image: aspose.pydrawing.Image) | create_image_wrapper(image) |
فئة PatternFormat
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| get_tile_image(background, foreground) | get_tile(background, foreground) |
| get_tile_image(style_color) | get_tile(style_color) |
فئة IPatternFormatEffectiveData
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| get_tile_image(background, foreground) | get_tile_i_image(background, foreground) |
فئة Output
| توقيع الطريقة | توقيع طريقة الاستبدال |
|---|---|
| add(path, image: aspose.pydrawing.Image) | add(path, image) |
ستتوقف دعم الـ API لـ aspose.pydrawing.Graphics
الأساليب التي تستخدم aspose.pydrawing.Graphics قد تم إهمالها؛ سيتم إزالة الدعم لها من الـ API العام.
الأعضاء الذين يعتمدون على aspose.pydrawing.Graphics وسيتم إزالتهم يشملون:
aspose.pydrawing.Slide.render_to_graphics(options, graphics)aspose.pydrawing.Slide.render_to_graphics(options, graphics, scale_x, scale_y)aspose.pydrawing.Slide.render_to_graphics(options, graphics, rendering_size)
الأسئلة الشائعة
لماذا تم إلغاء aspose.pydrawing.Graphics؟
يتم إزالة دعم Graphics من الـ API العام لتوحيد العمل مع التصيير والصور، وإلغاء الاعتماد على مكونات خاصة بالمنصة، والانتقال إلى نهج متعدد المنصات باستخدام IImage. سيتم حذف جميع الأساليب التي تُصوّر إلى Graphics.
ما الفائدة العملية من IImage مقارنةً بـ Image/Bitmap؟
IImage يوحّد العمل مع الصور النقطية والمتجهة، يبسط حفظ الصور بصيغ متعددة عبر ImageFormat، يقلل الاعتماد على pydrawing، ويجعل الكود أكثر قابلية للنقل بين البيئات.
هل سيؤثر الـ API الحديث على أداء إنشاء الصور المصغرة؟
التحول من get_thumbnail إلى get_image لا يفاقم السيناريوهات: توفر الأساليب الجديدة نفس الإمكانيات لإنتاج الصور مع الخيارات والأحجام، مع الحفاظ على دعم خيارات التصيير. الكسب أو الفقدان المحدد يعتمد على السيناريو، لكن وظائفياً التعويضات متكافئة.