Ulepsz przetwarzanie obrazów przy użyciu nowoczesnego API

Wstęp

Publiczne API Aspose.Slides for Python obecnie zależy od następujących typów aspose.pydrawing:

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

Od wersji 24.4 to publiczne API jest przestarzałe z powodu zmian w publicznym API Aspose.Slides for Python.

Aby wyeliminować aspose.pydrawing z publicznego API, wprowadziliśmy Nowoczesne API. Metody używające aspose.pydrawing.Image i aspose.pydrawing.Bitmap są przestarzałe i powinny zostać zastąpione ich odpowiednikami w Nowoczesnym API. Metody używające aspose.pydrawing.Graphics są przestarzałe i nie mają bezpośredniego zamiennika w Nowoczesnym API.

W bieżących wersjach traktuj publiczne API zależne od aspose.pydrawing jako dziedzictwo/przestarzałe. Używaj Nowoczesnego API w nowym kodzie oraz przy migracji istniejących przepływów przetwarzania obrazów.

Nowoczesne API

Do publicznego API dodano następujące klasy i wyliczenia:

Użyj get_image, aby wyrenderować pojedynczy slajd lub kształt. Użyj get_images, aby wyrenderować kilka slajdów prezentacji. Użyj metod Images do ładowania obrazów, add_image z IImage aby dodać je do prezentacji oraz replace_image z IImage aby zaktualizować istniejący obraz w prezentacji.

Typowy scenariusz użycia nowego API wygląda następująco:

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)

Zastąp stary kod nowoczesnym API

Aby ułatwić przejście, nowa klasa IImage odzwierciedla odrębne API klas aspose.pydrawing.Image i aspose.pydrawing.Bitmap. W większości przypadków wystarczy zamienić wywołania metod używających aspose.pydrawing na ich odpowiedniki w Nowoczesnym API.

Pobierz miniaturę slajdu

Przestarzałe API:

import aspose.slides as slides

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

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

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

Pobierz miniaturę kształtu

Przestarzałe 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")

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

Pobierz miniaturę prezentacji

Przestarzałe 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)

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

Dodaj obraz do prezentacji

Przestarzałe 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)

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

Metody i właściwości do usunięcia oraz ich nowoczesne zamienniki

Klasa Presentation

Sygnatura metody Zastępcza sygnatura metody
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

Klasa Slide

Sygnatura metody Zastępcza sygnatura metody
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

Klasa Shape

Sygnatura metody Zastępcza sygnatura metody
get_thumbnail() get_image()
get_thumbnail(bounds, scale_x, scale_y) get_image(bounds, scale_x, scale_y)

Klasa ImageCollection

Sygnatura metody Zastępcza sygnatura metody
add_image(image: aspose.pydrawing.Image) add_image(image)

Klasa PPImage

Sygnatura metody/właściwości Zastępcza sygnatura metody/właściwości
replace_image(new_image: aspose.pydrawing.Image) replace_image(new_image)
system_image image

Klasa ImageWrapperFactory

Sygnatura metody Zastępcza sygnatura metody
create_image_wrapper(image: aspose.pydrawing.Image) create_image_wrapper(image)

Klasa PatternFormat

Sygnatura metody Zastępcza sygnatura metody
get_tile_image(background, foreground) get_tile(background, foreground)
get_tile_image(style_color) get_tile(style_color)

Klasa IPatternFormatEffectiveData

Sygnatura metody Zastępcza sygnatura metody
get_tile_image(background, foreground) get_tile_i_image(background, foreground)

Klasa Output

Sygnatura metody Zastępcza sygnatura metody
add(path, image: aspose.pydrawing.Image) add(path, image)

Obsługa API dla aspose.pydrawing.Graphics

Metody używające aspose.pydrawing.Graphics są przestarzałe i nie mają bezpośredniego zamiennika w Nowoczesnym API.

Użyj metod renderujących obrazy w Nowoczesnym API zamiast API renderującego do 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)

FAQ

Dlaczego aspose.pydrawing.Graphics został usunięty?

Obsługa aspose.pydrawing.Graphics jest przestarzała w publicznym API, aby ujednolicić pracę z renderowaniem i obrazami, wyeliminować zależności od specyficznych platform oraz przejść na podejście wieloplatformowe z IImage. Użyj get_image lub get_images zamiast renderowania do aspose.pydrawing.Graphics.

Jaka jest praktyczna korzyść z IImage w porównaniu do aspose.pydrawing.Image/aspose.pydrawing.Bitmap?

IImage ujednolica pracę zarówno z obrazami rastrowymi, jak i wektorowymi, upraszcza zapisywanie w różnych formatach za pomocą ImageFormat, zmniejsza zależność od pydrawing i sprawia, że kod jest bardziej przenośny między środowiskami.

Czy nowoczesne API wpłynie na wydajność generowania miniatur?

Przejście z get_thumbnail na get_image nie pogarsza scenariuszy: nowe metody zapewniają te same możliwości tworzenia obrazów z opcjami i rozmiarami, zachowując wsparcie dla opcji renderowania. Konkretne zyski lub straty zależą od scenariusza, ale funkcjonalnie zamienniki są równoważne.