Verbeter beeldverwerking met de Moderne API

Introductie

De openbare API van Aspose.Slides voor Python maakt momenteel gebruik van de volgende aspose.pydrawing typen:

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

Vanaf versie 24.4 is deze openbare API verouderd vanwege changes in de openbare API van Aspose.Slides voor Python.

Om aspose.pydrawing uit de openbare API te verwijderen, hebben we de Modern API geïntroduceerd. Methoden die aspose.pydrawing.Image en aspose.pydrawing.Bitmap gebruiken, zijn verouderd en moeten worden vervangen door hun Modern API‑equivalenten. Methoden die aspose.pydrawing.Graphics gebruiken, zijn verouderd en hebben geen directe Modern API‑vervanging.

In de huidige versies moet de openbare API die afhankelijk is van aspose.pydrawing worden beschouwd als legacy/verouderd. Gebruik de Modern API voor nieuwe code en bij het migreren van bestaande beeldverwerkings‑workflows.

Moderne API

De volgende klassen en enumeraties zijn toegevoegd aan de openbare API:

Gebruik get_image om een enkele dia of vorm te renderen. Gebruik get_images om meerdere presentatiedia’s te renderen. Gebruik de methoden van Images om afbeeldingen te laden, add_image met IImage om ze aan een presentatie toe te voegen, en replace_image met IImage om een bestaande afbeelding in de presentatie bij te werken.

Een typisch gebruiksscenario voor de nieuwe API ziet er als volgt uit:

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)

Vervang oude code door de Moderne API

Voor een eenvoudigere overgang spiegelt de nieuwe klasse IImage de afzonderlijke API’s van de aspose.pydrawing.Image- en aspose.pydrawing.Bitmap-klassen. In de meeste gevallen hoef je alleen de aanroepen van methoden die aspose.pydrawing gebruiken te vervangen door hun Modern API‑equivalenten.

Een dia‑miniatuur ophalen

Verouderde API:

import aspose.slides as slides

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

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

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

Een vorm‑miniatuur ophalen

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

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

Een presentatieminiatuur ophalen

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

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

Een afbeelding toevoegen aan een presentatie

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

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

Methoden en eigenschappen die verwijderd worden en hun moderne vervangingen

Presentatie‑klasse

Methode‑handtekening Vervangende methode‑handtekening
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) Geen Modern API‑vervanging
save(fname, format, options, response, show_inline) Geen Modern API‑vervanging
print() Geen Modern API‑vervanging
print(printer_settings) Geen Modern API‑vervanging
print(printer_name) Geen Modern API‑vervanging
print(printer_settings, pres_name) Geen Modern API‑vervanging

Dia‑klasse

Methode‑handtekening Vervangende methode‑handtekening
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) Geen Modern API‑vervanging
render_to_graphics(options, graphics, scale_x, scale_y) Geen Modern API‑vervanging
render_to_graphics(options, graphics, rendering_size) Geen Modern API‑vervanging

Vorm‑klasse

Methode‑handtekening Vervangende methode‑handtekening
get_thumbnail() get_image()
get_thumbnail(bounds, scale_x, scale_y) get_image(bounds, scale_x, scale_y)

ImageCollection‑klasse

Methode‑handtekening Vervangende methode‑handtekening
add_image(image: aspose.pydrawing.Image) add_image(image)

PPImage‑klasse

Methode/eigenschap‑handtekening Vervangende methode/eigenschap‑handtekening
replace_image(new_image: aspose.pydrawing.Image) replace_image(new_image)
system_image image

ImageWrapperFactory‑klasse

Methode‑handtekening Vervangende methode‑handtekening
create_image_wrapper(image: aspose.pydrawing.Image) create_image_wrapper(image)

PatternFormat‑klasse

Methode‑handtekening Vervangende methode‑handtekening
get_tile_image(background, foreground) get_tile(background, foreground)
get_tile_image(style_color) get_tile(style_color)

IPatternFormatEffectiveData‑klasse

Methode‑handtekening Vervangende methode‑handtekening
get_tile_image(background, foreground) get_tile_i_image(background, foreground)

Output‑klasse

Methode‑handtekening Vervangende methode‑handtekening
add(path, image: aspose.pydrawing.Image) add(path, image)

API‑ondersteuning voor aspose.pydrawing.Graphics

Methoden die aspose.pydrawing.Graphics gebruiken, zijn verouderd en hebben geen directe Modern API‑vervanging.

Gebruik de Modern API‑methoden voor afbeeldingsrendering in plaats van de API die rendert naar 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

Waarom is aspose.pydrawing.Graphics verwijderd?

Ondersteuning voor aspose.pydrawing.Graphics is verouderd in de openbare API om het werk met rendering en afbeeldingen te uniformiseren, afhankelijkheden van platform‑specifieke componenten te elimineren en over te schakelen op een platform‑onafhankelijke aanpak met IImage. Gebruik get_image of get_images in plaats van te renderen naar aspose.pydrawing.Graphics.

Wat is het praktische voordeel van IImage ten opzichte van aspose.pydrawing.Image/aspose.pydrawing.Bitmap?

IImage unificeert het werken met zowel raster‑ als vectorafbeeldingen, vereenvoudigt het opslaan naar verschillende formaten via ImageFormat, vermindert de afhankelijkheid van pydrawing en maakt code draagbaarder over verschillende omgevingen.

Zal de Moderne API de prestaties van het genereren van miniaturen beïnvloeden?

Het overschakelen van get_thumbnail naar get_image verslechtert de scenario’s niet: de nieuwe methoden bieden dezelfde mogelijkheden om afbeeldingen te produceren met opties en afmetingen, terwijl ze de ondersteuning voor render‑opties behouden. Het specifieke winst‑ of verliespercentage hangt af van het scenario, maar functioneel zijn de vervangingen gelijkwaardig.