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 Modernizada. Los métodos que usan aspose.pydrawing.Image y aspose.pydrawing.Bitmap están obsoletos y serán reemplazados por sus equivalentes de la API Modernizada. Los métodos que usan aspose.pydrawing.Graphics están obsoletos, y su soporte será eliminado de la API pública.
La eliminación de la API obsoleta que depende de aspose.pydrawing está programada para la versión 24.8.
API Modernizada
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 conIImage.
Un escenario típico de uso para 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 Modernizada
Para una transición más fácil, la nueva interfaz IImage refleja las API separadas de las clases Image y Bitmap. En la mayoría de los casos, solo necesitas reemplazar las llamadas a métodos que usan aspose.pydrawing por sus equivalentes de la API Modernizada.
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 Modernizada:
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 Modernizada:
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 Modernizada:
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 Modernizada:
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 Modernizados
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) | 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 |
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: 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 |
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) |
El Soporte de la API para aspose.pydrawing.Graphics será Descontinuado
Los métodos que usan aspose.pydrawing.Graphics están obsoletos; su soporte será eliminado de la API pública.
Los miembros de la API que dependen de aspose.pydrawing.Graphics y serán eliminados incluyen:
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 Graphics se elimina de 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. Todos los métodos de renderizado a Graphics serán eliminados.
¿Cuál es el beneficio práctico de IImage comparado con Image/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 portátil entre entornos.
¿Afectará la API Modernizada 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 opciones de renderizado. La ganancia o pérdida específica depende del caso, pero funcionalmente los reemplazos son equivalentes.