Nâng cao xử lý hình ảnh với API Hiện Đại

Giới thiệu

API công cộng Aspose.Slides cho Python hiện đang phụ thuộc vào các kiểu aspose.pydrawing sau:

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

Kể từ phiên bản 24.4, API công cộng này đã bị lỗi thời do các thay đổi trong API công cộng Aspose.Slides cho Python.

Để loại bỏ aspose.pydrawing khỏi API công cộng, chúng tôi đã giới thiệu API Hiện Đại. Các phương thức sử dụng aspose.pydrawing.Imageaspose.pydrawing.Bitmap đã bị lỗi thời và nên được thay thế bằng các tương đương trong API Hiện Đại. Các phương thức sử dụng aspose.pydrawing.Graphics đã bị lỗi thời và không có thay thế trực tiếp trong API Hiện Đại.

Trong các phiên bản hiện tại, hãy coi API công cộng phụ thuộc vào aspose.pydrawing là cũ/được lỗi thời. Sử dụng API Hiện Đại cho mã mới và khi di chuyển các quy trình xử lý ảnh hiện có.

API Hiện Đại

Các lớp và enum sau đã được thêm vào API công cộng:

Sử dụng get_image để render một slide hoặc shape duy nhất. Sử dụng get_images để render nhiều slide của bản trình chiếu. Sử dụng các phương thức của Images để tải ảnh, add_image với IImage để thêm chúng vào bản trình chiếu, và replace_image với IImage để cập nhật ảnh hiện có trong bản trình chiếu.

Một kịch bản sử dụng điển hình cho API mới như sau:

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)

Thay Thế Mã Cũ Bằng API Hiện Đại

Để chuyển đổi dễ dàng hơn, lớp IImage mới phản chiếu các API riêng biệt của các lớp aspose.pydrawing.Imageaspose.pydrawing.Bitmap. Trong hầu hết các trường hợp, bạn chỉ cần thay thế các lời gọi tới các phương thức sử dụng aspose.pydrawing bằng các tương đương trong API Hiện Đại.

Lấy Thumbnail của Slide

API lỗi thời:

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    slide = presentation.slides[0]

    slide.get_thumbnail().save("slide1.png")

API Hiện Đại:

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

Lấy Thumbnail của Shape

API lỗi thời:

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 Hiện Đại:

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

Lấy Thumbnail của Bản Trình Chiếu

API lỗi thời:

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 Hiện Đại:

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)

Thêm Ảnh Vào Bản Trình Chiếu

API lỗi thời:

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 Hiện Đại:

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)

Các Phương Thức và Thuộc Tính sẽ Bị Loại Bỏ và Thay Thế Bằng API Hiện Đại

Lớp Presentation

Chữ ký Phương thức Chữ ký Phương thức Thay thế
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) Không có thay thế trong API Hiện Đại
save(fname, format, options, response, show_inline) Không có thay thế trong API Hiện Đại
print() Không có thay thế trong API Hiện Đại
print(printer_settings) Không có thay thế trong API Hiện Đại
print(printer_name) Không có thay thế trong API Hiện Đại
print(printer_settings, pres_name) Không có thay thế trong API Hiện Đại

Lớp Slide

Chữ ký Phương thức Chữ ký Phương thức Thay thế
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) Không có thay thế trong API Hiện Đại
render_to_graphics(options, graphics, scale_x, scale_y) Không có thay thế trong API Hiện Đại
render_to_graphics(options, graphics, rendering_size) Không có thay thế trong API Hiện Đại

Lớp Shape

Chữ ký Phương thức Chữ ký Phương thức Thay thế
get_thumbnail() get_image()
get_thumbnail(bounds, scale_x, scale_y) get_image(bounds, scale_x, scale_y)

Lớp ImageCollection

Chữ ký Phương thức Chữ ký Phương thức Thay thế
add_image(image: aspose.pydrawing.Image) add_image(image)

Lớp PPImage

Chữ ký Phương thức/Tài sản Chữ ký Phương thức/Tài sản Thay thế
replace_image(new_image: aspose.pydrawing.Image) replace_image(new_image)
system_image image

Lớp ImageWrapperFactory

Chữ ký Phương thức Chữ ký Phương thức Thay thế
create_image_wrapper(image: aspose.pydrawing.Image) create_image_wrapper(image)

Lớp PatternFormat

Chữ ký Phương thức Chữ ký Phương thức Thay thế
get_tile_image(background, foreground) get_tile(background, foreground)
get_tile_image(style_color) get_tile(style_color)

Lớp IPatternFormatEffectiveData

Chữ ký Phương thức Chữ ký Phương thức Thay thế
get_tile_image(background, foreground) get_tile_i_image(background, foreground)

Lớp Output

Chữ ký Phương thức Chữ ký Phương thức Thay thế
add(path, image: aspose.pydrawing.Image) add(path, image)

Hỗ Trợ API cho aspose.pydrawing.Graphics

Các phương thức sử dụng aspose.pydrawing.Graphics đã bị lỗi thời và không có thay thế trực tiếp trong API Hiện Đại.

Sử dụng các phương thức render ảnh của API Hiện Đại thay vì API render tới 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)

Câu Hỏi Thường Gặp

Tại sao aspose.pydrawing.Graphics bị loại bỏ?

Hỗ trợ aspose.pydrawing.Graphics đã bị lỗi thời trong API công cộng để thống nhất công việc render và ảnh, loại bỏ các phụ thuộc nền tảng cụ thể, và chuyển sang cách tiếp cận đa nền tảng với IImage. Sử dụng get_image hoặc get_images thay vì render tới aspose.pydrawing.Graphics.

Lợi ích thực tế của IImage so với aspose.pydrawing.Image/aspose.pydrawing.Bitmap là gì?

IImage hợp nhất việc làm việc với cả ảnh raster và vector, đơn giản hoá việc lưu vào các định dạng khác nhau qua ImageFormat, giảm phụ thuộc vào pydrawing, và làm cho mã dễ di chuyển giữa các môi trường.

API Hiện Đại có ảnh hưởng tới hiệu năng tạo thumbnail không?

Việc chuyển từ get_thumbnail sang get_image không làm giảm hiệu năng: các phương thức mới cung cấp cùng khả năng tạo ảnh với các tùy chọn và kích thước, đồng thời vẫn hỗ trợ các tùy chọn render. Lợi ích hoặc giảm hiệu năng cụ thể phụ thuộc vào kịch bản, nhưng về chức năng các thay thế là tương đương.