Förbättra bildbehandling med det moderna API:et

Introduktion

Det offentliga API:t för Aspose.Slides för Python är för närvarande beroende av följande aspose.pydrawing‑typer:

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

Från och med version 24.4 är detta offentliga API föråldrat på grund av ändringar i det offentliga API:t för Aspose.Slides för Python.

För att eliminera aspose.pydrawing från det offentliga API:t introducerade vi Modern API. Metoder som använder aspose.pydrawing.Image och aspose.pydrawing.Bitmap är föråldrade och bör ersättas av deras motsvarande Modern API‑metoder. Metoder som använder aspose.pydrawing.Graphics är föråldrade och har ingen direkt Modern API‑ersättning.

I nuvarande versioner bör det offentliga API:t som är beroende av aspose.pydrawing betraktas som legacy/föråldrat. Använd Modern API för ny kod och när du migrerar befintliga bildbehandlingsarbetsflöden.

Modern API

Följande klasser och uppräkningar har lagts till i det offentliga API:t:

Använd get_image för att rendera en enda bildspelsida eller form. Använd get_images för att rendera flera presentation‑bilder. Använd Images‑metoder för att läsa in bilder, add_image med IImage för att lägga till dem i en presentation, och replace_image med IImage för att uppdatera en befintlig presentationsbild.

Ett typiskt användningsscenario för det nya API:t ser ut så här:

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)

Byt ut gammal kod mot Modern API

För en enklare övergång speglar den nya IImage‑klassen de separata API:erna för aspose.pydrawing.Image och aspose.pydrawing.Bitmap. I de flesta fall behöver du bara ersätta anrop till metoder som använder aspose.pydrawing med deras motsvarande Modern API‑metoder.

Hämta en bildspelsida miniatyr

Föråldrat 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")

Hämta en form miniatyr

Föråldrat 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")

Hämta en presentation miniatyr

Föråldrat 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)

Lägg till en bild i en presentation

Föråldrat 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)

Metoder och egenskaper som ska tas bort och deras moderna ersättningar

Presentation‑klass

Metodsignatur Ersättningsmetodsignatur
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‑klass

Metodsignatur Ersättningsmetodsignatur
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‑klass

Metodsignatur Ersättningsmetodsignatur
get_thumbnail() get_image()
get_thumbnail(bounds, scale_x, scale_y) get_image(bounds, scale_x, scale_y)

ImageCollection‑klass

Metodsignatur Ersättningsmetodsignatur
add_image(image: aspose.pydrawing.Image) add_image(image)

PPImage‑klass

Metod/Egendomssignatur Ersättningsmetod/Egendomssignatur
replace_image(new_image: aspose.pydrawing.Image) replace_image(new_image)
system_image image

ImageWrapperFactory‑klass

Metodsignatur Ersättningsmetodsignatur
create_image_wrapper(image: aspose.pydrawing.Image) create_image_wrapper(image)

PatternFormat‑klass

Metodsignatur Ersättningsmetodsignatur
get_tile_image(background, foreground) get_tile(background, foreground)
get_tile_image(style_color) get_tile(style_color)

IPatternFormatEffectiveData‑klass

Metodsignatur Ersättningsmetodsignatur
get_tile_image(background, foreground) get_tile_i_image(background, foreground)

Output‑klass

Metodsignatur Ersättningsmetodsignatur
add(path, image: aspose.pydrawing.Image) add(path, image)

API‑stöd för aspose.pydrawing.Graphics

Metoder som använder aspose.pydrawing.Graphics är föråldrade och har ingen direkt Modern API‑ersättning.

Använd Modern API:s bildrenderingsmetoder i stället för API:t som renderar till 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)

Vanliga frågor

Varför togs aspose.pydrawing.Graphics bort?

Stödet för aspose.pydrawing.Graphics är föråldrat i det offentliga API:t för att förena rendering och bildhantering, eliminera beroenden till plattforms‑specifika komponenter och gå över till ett plattformsoberoende tillvägagångssätt med IImage. Använd get_image eller get_images i stället för att rendera till aspose.pydrawing.Graphics.

Vilken praktisk nytta ger IImage jämfört med aspose.pydrawing.Image/aspose.pydrawing.Bitmap?

IImage förenar arbete med både raster‑ och vektorbilder, förenklar sparande till olika format via ImageFormat, minskar beroendet av pydrawing och gör koden mer portabel mellan miljöer.

Kommer Modern API att påverka prestandan för att generera miniatyrer?

Att byta från get_thumbnail till get_image försämrar inte scenarierna: de nya metoderna erbjuder samma funktionalitet för att producera bilder med alternativ och storlekar, samtidigt som stöd för renderingsalternativ behålls. Den specifika vinsten eller förlusten beror på scenariot, men funktionellt är ersättningarna ekvivalenta.