Optimieren Sie die Bildverarbeitung mit der Modernen API

Einleitung

Die öffentliche API von Aspose.Slides für Python hängt derzeit von den folgenden aspose.pydrawing‑Typen ab:

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

Ab Version 24.4 ist diese öffentliche API veraltet wegen Änderungen in der Aspose.Slides für Python‑Public‑API.

Um aspose.pydrawing aus der öffentlichen API zu entfernen, haben wir die Moderne API eingeführt. Methoden, die aspose.pydrawing.Image und aspose.pydrawing.Bitmap verwenden, sind veraltet und werden durch ihre Gegenstücke der Modernen API ersetzt. Methoden, die aspose.pydrawing.Graphics verwenden, sind veraltet und die Unterstützung dafür wird aus der öffentlichen API entfernt.

Das Entfernen der veralteten API, die von aspose.pydrawing abhängt, ist für die Veröffentlichung 24.8 geplant.

Moderne API

Die folgenden Klassen und Aufzählungen wurden zur öffentlichen API hinzugefügt:

Ein typisches Anwendungsszenario für die neue API sieht so aus:

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)

Alten Code durch die Moderne API ersetzen

Für einen einfacheren Umstieg spiegelt das neue IImage‑Interface die getrennten APIs der Klassen Image und Bitmap wider. In den meisten Fällen müssen Sie lediglich Aufrufe von Methoden, die aspose.pydrawing verwenden, durch deren Gegenstücke der Modernen API ersetzen.

Ein Folien‑Thumbnail abrufen

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

Ein Shape‑Thumbnail abrufen

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

Ein Präsentations‑Thumbnail abrufen

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

Ein Bild zu einer Präsentation hinzufügen

Veraltete 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 und Eigenschaften, die entfernt werden, und deren Moderne Ersatzmethoden

Presentation‑Klasse

Methodensignatur Ersatz-Methodensignatur
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) Wird vollständig gelöscht
save(fname, format, options, response, show_inline) Wird vollständig gelöscht
print() Wird vollständig gelöscht
print(printer_settings) Wird vollständig gelöscht
print(printer_name) Wird vollständig gelöscht
print(printer_settings, pres_name) Wird vollständig gelöscht

Slide‑Klasse

Methodensignatur Ersatz-Methodensignatur
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: ITiffOotions)
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) Wird vollständig gelöscht
render_to_graphics(options, graphics, scale_x, scale_y) Wird vollständig gelöscht
render_to_graphics(options, graphics, rendering_size) Wird vollständig gelöscht

Shape‑Klasse

Methodensignatur Ersatz-Methodensignatur
get_thumbnail() get_image()
get_thumbnail(bounds, scale_x, scale_y) get_image(bounds, scale_x, scale_y)

ImageCollection‑Klasse

Methodensignatur Ersatz-Methodensignatur
add_image(image: aspose.pydrawing.Image) add_image(image)

PPImage‑Klasse

Methoden-/Eigenschaftssignatur Ersatz-Methoden-/Eigenschaftssignatur
replace_image(new_image: aspose.pydrawing.Image) replace_image(new_image)
system_image image

ImageWrapperFactory‑Klasse

Methodensignatur Ersatz-Methodensignatur
create_image_wrapper(image: aspose.pydrawing.Image) create_image_wrapper(image)

PatternFormat‑Klasse

Methodensignatur Ersatz-Methodensignatur
get_tile_image(background, foreground) get_tile(background, foreground)
get_tile_image(style_color) get_tile(style_color)

IPatternFormatEffectiveData‑Klasse

Methodensignatur Ersatz-Methodensignatur
get_tile_image(background, foreground) get_tile_i_image(background, foreground)

Output‑Klasse

Methodensignatur Ersatz-Methodensignatur
add(path, image: aspose.pydrawing.Image) add(path, image)

Unterstützung für aspose.pydrawing.Graphics wird eingestellt

Methoden, die aspose.pydrawing.Graphics verwenden, sind veraltet; die Unterstützung dafür wird aus der öffentlichen API entfernt.

Die API‑Elemente, die von aspose.pydrawing.Graphics abhängen und entfernt werden, umfassen:

  • 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

Warum wurde aspose.pydrawing.Graphics entfernt?

Die Unterstützung für Graphics wird aus der öffentlichen API entfernt, um die Arbeit mit Rendering und Bildern zu vereinheitlichen, Abhängigkeiten von plattformspezifischen Bibliotheken zu eliminieren und zu einem plattformübergreifenden Ansatz mit IImage zu wechseln. Alle Rendering‑Methoden zu Graphics werden entfernt.

Welchen praktischen Nutzen bietet IImage im Vergleich zu Image/Bitmap?

IImage vereinheitlicht die Arbeit mit Raster‑ und Vektorbildern, vereinfacht das Speichern in verschiedene Formate über ImageFormat, reduziert die Abhängigkeit von pydrawing und macht den Code portabler über verschiedene Umgebungen hinweg.

Beeinflusst die Moderne API die Performance bei der Erstellung von Thumbnails?

Der Wechsel von get_thumbnail zu get_image verschlechtert die Szenarien nicht: Die neuen Methoden bieten die gleichen Möglichkeiten zur Bildgenerierung mit Optionen und Größen, während weiterhin Rendering‑Optionen unterstützt werden. Der konkrete Gewinn oder Verlust hängt vom Einzelfall ab, funktional sind die Ersatzmethoden jedoch äquivalent.