Bildverarbeitung mit der Modernen API verbessern

Einleitung

Die Aspose.Slides für Python öffentliche API 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 aufgrund von Änderungen in der Aspose.Slides für Python öffentlichen 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 sollten durch ihre Moderne API‑Entsprechungen ersetzt werden. Methoden, die aspose.pydrawing.Graphics verwenden, sind veraltet und haben keinen direkten Ersatz in der Modernen API.

In aktuellen Versionen behandeln Sie die öffentliche API, die von aspose.pydrawing abhängt, als legacy/veraltet. Verwenden Sie die Moderne API für neuen Code und beim Migrieren bestehender Bildverarbeitungs‑Workflows.

Moderne API

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

Verwenden Sie get_image, um eine einzelne Folie oder ein Shape zu rendern. Verwenden Sie get_images, um mehrere Präsentationsfolien zu rendern. Verwenden Sie die Images‑Methoden, um Bilder zu laden, add_image mit IImage zum Hinzufügen zu einer Präsentation und replace_image mit IImage zum Aktualisieren eines bestehenden Präsentationsbildes.

Ein typisches Anwendungsbeispiel für die neue API sieht folgendermaßen 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 Übergang spiegelt die neue IImage‑Klasse die separaten APIs der Klassen aspose.pydrawing.Image und aspose.pydrawing.Bitmap wider. In den meisten Fällen müssen Sie nur Aufrufe von Methoden, die aspose.pydrawing verwenden, durch deren Moderne API‑Entsprechungen ersetzen.

Ein Folien‑Miniaturbild erhalten

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‑Miniaturbild erhalten

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‑Miniaturbild erhalten

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 ihre modernen Ersatzmethoden

Presentation‑Klasse

Methodensignatur Ersetzungsmethodensignatur
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‑Klasse

Methodensignatur Ersetzungsmethodensignatur
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‑Klasse

Methodensignatur Ersetzungsmethodensignatur
get_thumbnail() get_image()
get_thumbnail(bounds, scale_x, scale_y) get_image(bounds, scale_x, scale_y)

ImageCollection‑Klasse

Methodensignatur Ersetzungsmethodensignatur
add_image(image: aspose.pydrawing.Image) add_image(image)

PPImage‑Klasse

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

ImageWrapperFactory‑Klasse

Methodensignatur Ersetzungsmethodensignatur
create_image_wrapper(image: aspose.pydrawing.Image) create_image_wrapper(image)

PatternFormat‑Klasse

Methodensignatur Ersetzungsmethodensignatur
get_tile_image(background, foreground) get_tile(background, foreground)
get_tile_image(style_color) get_tile(style_color)

IPatternFormatEffectiveData‑Klasse

Methodensignatur Ersetzungsmethodensignatur
get_tile_image(background, foreground) get_tile_i_image(background, foreground)

Output‑Klasse

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

API‑Unterstützung für aspose.pydrawing.Graphics

Methoden, die aspose.pydrawing.Graphics verwenden, sind veraltet und haben keinen direkten Ersatz in der Modernen API.

Verwenden Sie stattdessen die Bild‑Render‑Methoden der Modernen API anstelle der API, die zu aspose.pydrawing.Graphics rendert:

  • 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 aspose.pydrawing.Graphics ist in der öffentlichen API veraltet, 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. Verwenden Sie get_image oder get_images anstelle des Renderns zu aspose.pydrawing.Graphics.

Was ist der praktische Nutzen von IImage im Vergleich zu aspose.pydrawing.Image/aspose.pydrawing.Bitmap?

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

Wird die Moderne API die Leistung beim Erzeugen von Miniaturbildern beeinflussen?

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