Améliorer le traitement d'images avec l'API Moderne

Introduction

L’API publique Aspose.Slides for Python dépend actuellement des types aspose.pydrawing suivants :

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

À partir de la version 24.4, cette API publique est obsolète en raison des modifications.

Pour éliminer aspose.pydrawing de l’API publique, nous avons introduit l'API moderne. Les méthodes qui utilisent aspose.pydrawing.Image et aspose.pydrawing.Bitmap sont obsolètes et seront remplacées par leurs équivalents de l’API moderne. Les méthodes qui utilisent aspose.pydrawing.Graphics sont obsolètes, et leur prise en charge sera supprimée de l’API publique.

La suppression de l’API obsolète qui dépend de aspose.pydrawing est prévue pour la version 24.8.

API moderne

Les classes et énumérations suivantes ont été ajoutées à l’API publique :

Un scénario d’utilisation typique pour la nouvelle API ressemble à ceci :

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)

Remplacer le code ancien par l’API moderne

Pour faciliter la transition, la nouvelle classe IImage reflète les API distinctes des classes Image et Bitmap. Dans la plupart des cas, vous n’avez qu’à remplacer les appels aux méthodes qui utilisent aspose.pydrawing par leurs équivalents de l’API moderne.

Obtenir une vignette de diapositive

API obsolète :

import aspose.slides as slides

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

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

API moderne :

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

Obtenir une vignette de forme

API obsolète :

import aspose.slides as slides

with slides.Presentation("sample.pptx") as presentation:
    shape = presentation.slides[0].shapes[0]
    
    shape.get_thumbnail().save("shape.png")

API moderne :

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

Obtenir une vignette de présentation

API obsolète :

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)

API moderne :

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)

Ajouter une image à une présentation

API obsolète :

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)

API moderne :

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)

Méthodes et propriétés qui seront supprimées et leurs remplacements modernes

Classe Presentation

Signature de méthode Signature de la méthode de remplacement
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) Will be deleted completely
save(fname, format, options, response, show_inline) Will be deleted completely
print() Will be deleted completely
print(printer_settings) Will be deleted completely
print(printer_name) Will be deleted completely
print(printer_settings, pres_name) Will be deleted completely

Classe Slide

Signature de méthode Signature de la méthode de remplacement
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) Will be deleted completely
render_to_graphics(options, graphics, scale_x, scale_y) Will be deleted completely
render_to_graphics(options, graphics, rendering_size) Will be deleted completely

Classe Shape

Signature de méthode Signature de la méthode de remplacement
get_thumbnail() get_image()
get_thumbnail(bounds, scale_x, scale_y) get_image(bounds, scale_x, scale_y)

Classe ImageCollection

Signature de méthode Signature de la méthode de remplacement
add_image(image: aspose.pydrawing.Image) add_image(image)

Classe PPImage

Signature de méthode/propriété Signature de méthode/propriété de remplacement
replace_image(new_image: aspose.pydrawing.Image) replace_image(new_image)
system_image image

Classe ImageWrapperFactory

Signature de méthode Signature de la méthode de remplacement
create_image_wrapper(image: aspose.pydrawing.Image) create_image_wrapper(image)

Classe PatternFormat

Signature de méthode Signature de la méthode de remplacement
get_tile_image(background, foreground) get_tile(background, foreground)
get_tile_image(style_color) get_tile(style_color)

Classe IPatternFormatEffectiveData

Signature de méthode Signature de la méthode de remplacement
get_tile_image(background, foreground) get_tile_i_image(background, foreground)

Classe Output

Signature de méthode Signature de la méthode de remplacement
add(path, image: aspose.pydrawing.Image) add(path, image)

Le support de l’API pour aspose.pydrawing.Graphics sera interrompu

Les méthodes qui utilisent aspose.pydrawing.Graphics sont obsolètes ; leur prise en charge sera supprimée de l’API publique.

Les membres d’API qui reposent sur aspose.pydrawing.Graphics et qui seront supprimés comprennent :

  • 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

Pourquoi aspose.pydrawing.Graphics a‑t‑il été supprimé ?

Le support de Graphics est retiré de l’API publique pour unifier le travail de rendu et d’images, éliminer les dépendances spécifiques à la plateforme et passer à une approche multi‑plateforme avec IImage. Toutes les méthodes de rendu vers Graphics seront supprimées.

Quel est l’avantage pratique d’IImage par rapport à Image/Bitmap ?

IImage unifie la gestion des images raster et vectorielles, simplifie l’enregistrement dans divers formats via ImageFormat, réduit la dépendance à pydrawing et rend le code plus portable entre les environnements.

L’API moderne affectera‑t‑elle les performances de génération des vignettes ?

Passer de get_thumbnail à get_image n’altère pas les scénarios : les nouvelles méthodes offrent les mêmes possibilités de production d’images avec des options et des tailles, tout en conservant le support des options de rendu. Le gain ou la perte spécifique dépend du scénario, mais fonctionnellement les remplacements sont équivalents.