Mejorar el procesamiento de imágenes con la API Moderna
Introducción
La API pública de Aspose.Slides para Python depende actualmente de los siguientes tipos aspose.pydrawing:
aspose.pydrawing.Graphicsaspose.pydrawing.Imageaspose.pydrawing.Bitmapaspose.pydrawing.printing.PrinterSettings
A partir de la versión 24.4, esta API pública está obsoleta debido a cambios en la API pública de Aspose.Slides para Python.
Para eliminar aspose.pydrawing de la API pública, introdujimos la API Moderna. Los métodos que utilizan aspose.pydrawing.Image y aspose.pydrawing.Bitmap están obsoletos y deben reemplazarse por sus equivalentes de la API Moderna. Los métodos que utilizan aspose.pydrawing.Graphics están obsoletos y no tienen un reemplazo directo en la API Moderna.
En las versiones actuales, considere la API pública que depende de aspose.pydrawing como heredada/obsoleta. Use la API Moderna para código nuevo y al migrar flujos de trabajo de procesamiento de imágenes existentes.
API Moderna
Se han añadido las siguientes clases y enumeraciones a la API pública:
- aspose.slides.IImage - representa una imagen raster o vectorial.
- aspose.slides.ImageFormat - representa un formato de archivo de imagen.
- aspose.slides.Images - proporciona métodos para crear y trabajar con IImage.
Utilice get_image para renderizar una sola diapositiva o forma. Utilice get_images para renderizar varias diapositivas de la presentación. Utilice los métodos de Images para cargar imágenes, add_image con IImage para añadirlas a una presentación, y replace_image con IImage para actualizar una imagen existente de la presentación.
Un escenario típico de uso de la nueva API se ve así:
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)
Reemplazar el código antiguo con la API Moderna
Para una transición más fácil, la nueva clase IImage refleja las APIs separadas de las clases aspose.pydrawing.Image y aspose.pydrawing.Bitmap. En la mayoría de los casos, solo necesita reemplazar las llamadas a los métodos que utilizan aspose.pydrawing por sus equivalentes de la API Moderna.
Obtener una miniatura de diapositiva
API obsoleta:
import aspose.slides as slides
with slides.Presentation("sample.pptx") as presentation:
slide = presentation.slides[0]
slide.get_thumbnail().save("slide1.png")
API Moderna:
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")
Obtener una miniatura de forma
API obsoleta:
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 Moderna:
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")
Obtener una miniatura de presentación
API obsoleta:
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 Moderna:
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)
Agregar una imagen a una presentación
API obsoleta:
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 Moderna:
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étodos y propiedades que se eliminarán y sus reemplazos Modernos
Clase Presentation
| Firma del método | Firma del método de reemplazo |
|---|---|
| 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 |
Clase Slide
| Firma del método | Firma del método de reemplazo |
|---|---|
| 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 |
Clase Shape
| Firma del método | Firma del método de reemplazo |
|---|---|
| get_thumbnail() | get_image() |
| get_thumbnail(bounds, scale_x, scale_y) | get_image(bounds, scale_x, scale_y) |
Clase ImageCollection
| Firma del método | Firma del método de reemplazo |
|---|---|
| add_image(image: aspose.pydrawing.Image) | add_image(image) |
Clase PPImage
| Firma del método/propiedad | Firma del método/propiedad de reemplazo |
|---|---|
| replace_image(new_image: aspose.pydrawing.Image) | replace_image(new_image) |
| system_image | image |
Clase ImageWrapperFactory
| Firma del método | Firma del método de reemplazo |
|---|---|
| create_image_wrapper(image: aspose.pydrawing.Image) | create_image_wrapper(image) |
Clase PatternFormat
| Firma del método | Firma del método de reemplazo |
|---|---|
| get_tile_image(background, foreground) | get_tile(background, foreground) |
| get_tile_image(style_color) | get_tile(style_color) |
Clase IPatternFormatEffectiveData
| Firma del método | Firma del método de reemplazo |
|---|---|
| get_tile_image(background, foreground) | get_tile_i_image(background, foreground) |
Clase Output
| Firma del método | Firma del método de reemplazo |
|---|---|
| add(path, image: aspose.pydrawing.Image) | add(path, image) |
Compatibilidad de la API con aspose.pydrawing.Graphics
Los métodos que utilizan aspose.pydrawing.Graphics están obsoletos y no tienen un reemplazo directo en la API Moderna.
Utilice los métodos de renderizado de imágenes de la API Moderna en lugar de la API que renderiza a 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)
Preguntas frecuentes
¿Por qué se eliminó aspose.pydrawing.Graphics?
El soporte para aspose.pydrawing.Graphics está obsoleto en la API pública para unificar el trabajo con renderizado e imágenes, eliminar dependencias específicas de plataforma y pasar a un enfoque multiplataforma con IImage. Utilice get_image o get_images en lugar de renderizar a aspose.pydrawing.Graphics.
¿Cuál es el beneficio práctico de IImage comparado con aspose.pydrawing.Image/aspose.pydrawing.Bitmap?
IImage unifica el trabajo con imágenes raster y vectoriales, simplifica el guardado en varios formatos mediante ImageFormat, reduce la dependencia de pydrawing y hace que el código sea más portable entre entornos.
¿Afectará la API Moderna al rendimiento de la generación de miniaturas?
Cambiar de get_thumbnail a get_image no empeora los escenarios: los nuevos métodos ofrecen las mismas capacidades para producir imágenes con opciones y tamaños, manteniendo el soporte para las opciones de renderizado. La ganancia o pérdida específica depende del caso, pero funcionalmente los reemplazos son equivalentes.