بهبود پردازش تصویر با API مدرن
معرفی
API عمومی Aspose.Slides برای Python در حال حاضر به انواع زیر aspose.pydrawing بستگی دارد:
aspose.pydrawing.Graphicsaspose.pydrawing.Imageaspose.pydrawing.Bitmapaspose.pydrawing.printing.PrinterSettings
از نسخه 24.4، این API عمومی منسوخ شده است زیرا به تغییرات در API عمومی Aspose.Slides برای Python اعمال شده است.
برای حذف aspose.pydrawing از API عمومی، API مدرن معرفی شد. متدهایی که از aspose.pydrawing.Image و aspose.pydrawing.Bitmap استفاده میکنند منسوخ شدهاند و باید با معادلهای API مدرن جایگزین شوند. متدهایی که از aspose.pydrawing.Graphics استفاده میکنند منسوخ هستند و جایگزین مستقیم در API مدرن ندارند.
در نسخههای فعلی، API عمومی که به aspose.pydrawing وابسته است را به عنوان قدیمی/منسوخ درنظر بگیرید. برای کدهای جدید و هنگام مهاجرت از گردشکارهای پردازش تصویر موجود، از API مدرن استفاده کنید.
API مدرن
کلاسها و enumهای زیر به API عمومی اضافه شدهاند:
- aspose.slides.IImage - نمایانگر یک تصویر رستری یا برداری.
- aspose.slides.ImageFormat - نمایانگر قالب فایل تصویر.
- aspose.slides.Images - متدهایی برای ایجاد و کار با IImage فراهم میکند.
از get_image برای رندر یک اسلاید یا شکل استفاده کنید. از get_images برای رندر چندین اسلاید ارائه استفاده کنید. از متدهای Images برای بارگذاری تصاویر، add_image با IImage برای افزودن آنها به ارائه، و replace_image با 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های جداگانه aspose.pydrawing.Image و aspose.pydrawing.Bitmap را بازتاب میدهد. در اکثر موارد، فقط کافی است فراخوانیهای متدهایی که از aspose.pydrawing استفاده میکنند را با معادلهای API مدرن جایگزین کنید.
دریافت تصویر بندانگشتی اسلاید
Deprecated API:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
slide.get_thumbnail().save("slide1.png")
Modern 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")
دریافت تصویر بندانگشتی شکل
Deprecated 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")
Modern 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")
دریافت تصویر بندانگشتی ارائه
Deprecated 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)
Modern 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)
افزودن تصویر به یک ارائه
Deprecated 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)
Modern 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)
متدها و خصوصیات قابل حذف و جایگزینهای مدرن آنها
کلاس 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) | No Modern API replacement |
| save(fname, format, options, response, show_inline) | No Modern API replacement |
| print() | No Modern API replacement |
| print(printer_settings) | No Modern API replacement |
| print(printer_name) | No Modern API replacement |
| print(printer_settings, pres_name) | No Modern API replacement |
کلاس 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: ITiffOptions) |
| 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) | No Modern API replacement |
| render_to_graphics(options, graphics, scale_x, scale_y) | No Modern API replacement |
| render_to_graphics(options, graphics, rendering_size) | No Modern API replacement |
کلاس 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 مدرن ندارند.
به جای API که به aspose.pydrawing.Graphics رندر میکند، از متدهای رندر تصویر API مدرن استفاده کنید:
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 حذف شد؟
پشتیبانی از aspose.pydrawing.Graphics در API عمومی منسوخ شده است تا کار با رندر و تصاویر یکپارچه شود، وابستگی به پلتفرمهای خاص حذف شود و به یک رویکرد فراسازمانی با IImage سوئیچ شود. به جای رندر به aspose.pydrawing.Graphics از get_image یا get_images استفاده کنید.
فایده عملی IImage نسبت به aspose.pydrawing.Image/aspose.pydrawing.Bitmap چیست؟
IImage کار با هر دو تصویر رستری و برداری را یکپارچه میکند، ذخیرهسازی به قالبهای مختلف را از طریق ImageFormat ساده میسازد، وابستگی به pydrawing را کاهش میدهد و کد را در محیطهای مختلف قابل حملتر مینماید.
آیا API مدرن بر عملکرد تولید تصویرهای بندانگشتی تأثیر میگذارد؟
تبدیل از get_thumbnail به get_image باعث کاهش کارایی نمیشود: متدهای جدید همان قابلیتها را برای تولید تصویر با گزینهها و اندازهها فراهم میکنند و همچنان از گزینههای رندر پشتیبانی میکنند. سود یا ضرر خاص بستگی به سناریو دارد، اما از نظر عملکردی جایگزینها معادل هستند.