เพิ่มประสิทธิภาพการประมวลผลภาพด้วย Modern API

บทนำ

Aspose.Slides for Python API สาธารณะในขณะนี้ขึ้นอยู่กับประเภท aspose.pydrawing ต่อไปนี้:

  • aspose.pydrawing.Graphics
  • aspose.pydrawing.Image
  • aspose.pydrawing.Bitmap
  • aspose.pydrawing.printing.PrinterSettings

ตั้งแต่เวอร์ชัน 24.4, API สาธารณะนี้ถูก เลิกใช้งาน เนื่องจาก การเปลี่ยนแปลง ใน Aspose.Slides for Python API สาธารณะ

เพื่อขจัด aspose.pydrawing ออกจาก API สาธารณะ, เราได้แนะนำ Modern API เมธอดที่ใช้ aspose.pydrawing.Image และ aspose.pydrawing.Bitmap ถูกเลิกใช้งานและควรแทนที่ด้วยเมธอดที่เทียบเท่าใน Modern API เมธอดที่ใช้ aspose.pydrawing.Graphics ถูกเลิกใช้งานและไม่มีการแทนที่โดยตรงใน Modern API

ในเวอร์ชันปัจจุบันให้ถือว่า API สาธารณะที่พึ่งพา aspose.pydrawing เป็นรุ่นเก่า/เลิกใช้งาน ใช้ Modern API สำหรับโค้ดใหม่และเมื่อย้ายกระบวนการประมวลผลภาพที่มีอยู่

API สมัยใหม่

คลาสและ enum ต่อไปนี้ได้ถูกเพิ่มเข้าไปใน API สาธารณะ:

ใช้ 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)

แทนที่โค้ดเก่าด้วย Modern API

เพื่อการเปลี่ยนแปลงที่ง่ายกว่า, คลาส IImage ใหม่จำลอง API แยกต่างหากของคลาส aspose.pydrawing.Image และ aspose.pydrawing.Bitmap ในหลายกรณีคุณเพียงแค่ต้องแทนที่การเรียกเมธอดที่ใช้ aspose.pydrawing ด้วยเมธอดเทียบเท่าใน Modern API

รับภาพย่อของสไลด์

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")

รับภาพย่อของรูปร่าง

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")

รับภาพย่อของพรีเซนเทชัน

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)

เพิ่มรูปภาพลงในพรีเซนเทชัน

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)

เมธอดและพร็อพเพอร์ตีที่จะถูกลบและการแทนที่ใน Modern 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) 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 ถูกเลิกใช้งานและไม่มีการแทนที่โดยตรงใน Modern API

ใช้เมธอดการเรนเดอร์ภาพของ Modern API แทนการใช้ 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 ถึงถูกยกเลิก?

การสนับสนุน aspose.pydrawing.Graphics ถูกระบุว่าเลิกใช้งานใน API สาธารณะเพื่อรวมการทำงานของการเรนเดอร์และภาพ, ขจัดการเชื่อมโยงกับการพึ่งพาแพลตฟอร์มเฉพาะ, และเปลี่ยนไปใช้แนวทางข้ามแพลตฟอร์มด้วย IImage. ใช้ get_image หรือ get_images แทนการเรนเดอร์ไปยัง aspose.pydrawing.Graphics.

ประโยชน์เชิงปฏิบัติของ IImage เทียบกับ aspose.pydrawing.Image/aspose.pydrawing.Bitmap คืออะไร?

IImage ทำให้การทำงานกับภาพแรสเตอร์และเวกเตอร์ร่วมกัน, ทำให้การบันทึกเป็นฟอร์แมตต่าง ๆ ง่ายขึ้นผ่าน ImageFormat, ลดการพึ่งพา pydrawing, และทำให้โค้ดพกพาได้ดีขึ้นในหลายสภาพแวดล้อม.

Modern API จะส่งผลต่อประสิทธิภาพการสร้างภาพย่อหรือไม่?

การสลับจาก get_thumbnail ไปยัง get_image ไม่ทำให้สถานการณ์แย่ลง: เมธอดใหม่ให้ความสามารถเดียวกันในการสร้างภาพพร้อมตัวเลือกและขนาด, พร้อมการสนับสนุนตัวเลือกการเรนเดอร์ ขึ้นอยู่กับสถานการณ์อาจมีการเพิ่มหรืออาจไม่มีการเปลี่ยนแปลงประสิทธิภาพ, แต่ด้านฟังก์ชันการทำงานเทียบเท่ากัน.