API moderna
Introducción
Históricamente, Aspose Slides tiene una dependencia de java.awt y en la API pública tiene las siguientes clases de allí:
A partir de la versión 24.4, esta API pública está declarada como obsoleta.
Para eliminar las dependencias de estas clases, añadimos la llamada “API moderna”, es decir, la API que debe usarse en lugar de la obsoleta, cuyas firmas contienen dependencias de BufferedImage. Graphics2D está declarada obsoleta y su soporte se eliminó de la API pública de Slides.
La eliminación de la API pública obsoleta con dependencias en System.Drawing será en la versión 24.8.
API moderna
Se añadieron las siguientes clases y enumeraciones a la API pública:
- IImage - representa la imagen raster o vectorial.
- ImageFormat - representa el formato de archivo de la imagen.
- Images - métodos para instanciar y trabajar con la clase IImage.
Tenga en cuenta que IImage es desechable (implementa la clase IDisposable y su uso debe envolver en using o descartarse de otra manera conveniente).
Un escenario típico de uso de la nueva API puede verse como sigue:
var pres = new aspose.slides.Presentation();
try {
var ppImage;
// instanciar una instancia desechable de IImage desde el archivo en el disco.
var image = aspose.slides.Images.fromFile("image.png");
try {
// crear una imagen de PowerPoint añadiendo una instancia de IImage a las imágenes de la presentación.
ppImage = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// añadir una forma de imagen en la diapositiva #1
pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
var size = java.newInstanceSync("java.awt.Dimension", 1920, 1080);
// obtener una instancia de IImage que representa la diapositiva #1.
var slideImage = pres.getSlides().get_Item(0).getImage(size);
try {
// guardar la imagen en el disco.
slideImage.save("slide1.jpeg", aspose.slides.ImageFormat.Jpeg);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Reemplazar código antiguo con la API moderna
En general, necesitará reemplazar la llamada al método antiguo que usa ImageIO por el nuevo.
Antiguo:
var imageio = java.import("javax.imageio.ImageIO");
var size = java.newInstanceSync("java.awt.Dimension", 1920, 1080);
var slideImage = pres.getSlides().get_Item(0).getThumbnail(size);
var file = java.newInstanceSync("java.io.File", "image.png");
imageio.write(slideImage, "PNG", file);
Nuevo:
var size = java.newInstanceSync("java.awt.Dimension", 1920, 1080);
var slideImage = pres.getSlides().get_Item(0).getImage(size);
slideImage.save("image.png", aspose.slides.ImageFormat.Png);
slideImage.dispose();
Obtener una miniatura de diapositiva
Código que usa una API obsoleta:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var slideImage = pres.getSlides().get_Item(0).getThumbnail();
var imageio = java.import("javax.imageio.ImageIO");
var file = java.newInstanceSync("java.io.File", "slide1.png");
imageio.write(slideImage, "PNG", file);
} finally {
if (pres != null) pres.dispose();
}
API moderna:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var slideImage = pres.getSlides().get_Item(0).getImage();
slideImage.save("slide1.png", aspose.slides.ImageFormat.Png);
slideImage.dispose();
} finally {
if (pres != null) pres.dispose();
}
Obtener una miniatura de forma
Código que usa una API obsoleta:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var shapeImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getThumbnail();
var imageio = java.import("javax.imageio.ImageIO");
var file = java.newInstanceSync("java.io.File", "shape.png");
imageio.write(shapeImage, "PNG", file);
} finally {
if (pres != null) pres.dispose();
}
API moderna:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var shapeImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage();
shapeImage.save("shape.png");
shapeImage.dispose();
} finally {
if (pres != null) pres.dispose();
}
Obtener una miniatura de presentación
Código que usa una API obsoleta:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var size = java.newInstanceSync("java.awt.Dimension", 1980, 1028);
var bitmaps = pres.getThumbnails(new aspose.slides.RenderingOptions(), size);
for (var index = 0; index < bitmaps.length; index++)
{
var thumbnail = bitmaps[index];
var imageio = java.import("javax.imageio.ImageIO");
var file = java.newInstanceSync("java.io.File", "slide" + index + ".png");
imageio.write(thumbnail, "PNG", file);
}
} finally {
if (pres != null) pres.dispose();
}
API moderna:
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var size = java.newInstanceSync("java.awt.Dimension", 1980, 1028);
var images = pres.getImages(new aspose.slides.RenderingOptions(), size);
try
{
for (var index = 0; index < images.length; index++)
{
var thumbnail = images[index];
thumbnail.save("slide" + index + ".png", aspose.slides.ImageFormat.Png);
}
}
finally
{
images.forEach(item => {item.dispose();});
}
} finally {
if (pres != null) pres.dispose();
}
Agregar una imagen a una presentación
Código que usa una API obsoleta:
var pres = new aspose.slides.Presentation();
try {
var imageio = java.import("javax.imageio.ImageIO");
var file = java.newInstanceSync("java.io.File", "image.png");
var bufferedImages = imageio.read(file);
var ppImage = pres.getImages().addImage(bufferedImages);
pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
} finally {
if (pres != null) pres.dispose();
}
API moderna:
var pres = new aspose.slides.Presentation();
try {
var image = aspose.slides.Images.fromFile("image.png");
var ppImage = pres.getImages().addImage(image);
image.dispose();
pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100, ppImage);
} finally {
if (pres != null) pres.dispose();
}
Métodos que se eliminarán y su reemplazo en la API moderna
Presentation
| Firma del método | Firma del método de reemplazo |
|---|---|
| public final BufferedImage[] getThumbnails(IRenderingOptions options) | public final IImage[] getImages(IRenderingOptions options) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, float scaleX, float scaleY) | public final IImage[] getImages(IRenderingOptions options, float scaleX, float scaleY) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides) | public final IImage[] getImages(IRenderingOptions options, int[] slides) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides, float scaleX, float scaleY) | public final IImage[] getImages(IRenderingOptions options, int[] slides, float scaleX, float scaleY) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, int[] slides, Dimension imageSize) | public final IImage[] getImages(IRenderingOptions options, int[] slides, Dimension imageSize) |
| public final BufferedImage[] getThumbnails(IRenderingOptions options, Dimension imageSize) | public final IImage[] getImages(IRenderingOptions options, Dimension imageSize) |
Shape
| Firma del método | Firma del método de reemplazo |
|---|---|
| public final BufferedImage getThumbnail() | public final IImage getImage() |
| public final BufferedImage getThumbnail(int bounds, float scaleX, float scaleY) | public final IImage getImage(int bounds, float scaleX, float scaleY) |
Slide
| Firma del método | Firma del método de reemplazo |
|---|---|
| public final BufferedImage getThumbnail() | public final IImage getImage() |
| public final BufferedImage getThumbnail(float scaleX, float scaleY) | public final IImage getImage(float scaleX, float scaleY) |
| public final BufferedImage getThumbnail(IRenderingOptions options) | public final IImage getImage(IRenderingOptions options) |
| public final BufferedImage getThumbnail(IRenderingOptions options, float scaleX, float scaleY) | public final IImage getImage(IRenderingOptions options) |
| public final BufferedImage getThumbnail(IRenderingOptions options, Dimension imageSize) | public final IImage getImage(IRenderingOptions options, Dimension imageSize) |
| public final BufferedImage getThumbnail(ITiffOptions options) | public final IImage getImage(ITiffOptions options) |
| public final BufferedImage getThumbnail(Dimension imageSize) | public final IImage getImage(Dimension imageSize) |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics) | Se eliminará por completo |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, float scaleX, float scaleY) | Se eliminará por completo |
| public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, Dimension renderingSize) | Se eliminará por completo |
Output
| Firma del método | Firma del método de reemplazo |
|---|---|
| public final IOutputFile add(String path, BufferedImage image) | public final IOutputFile add(String path, IImage image) |
ImageCollection
| Firma del método | Firma del método de reemplazo |
|---|---|
| public final PPImage addImage(BufferedImage image) | public final PPImage addImage(IImage image) |
PPImage
| Firma del método | Firma del método de reemplazo |
|---|---|
| public final BufferedImage getSystemImage() | public final IImage getImage() |
PatternFormat
| Firma del método | Firma del método de reemplazo |
|---|---|
| public final BufferedImage getTileImage(Color styleColor) | public final IImage getTile(Color styleColor) |
| public final BufferedImage getTileImage(Color background, Color foreground) | public final IImage getTile(Color background, Color foreground) |
PatternFormatEffectiveData
| Firma del método | Firma del método de reemplazo |
|---|---|
| public final java.awt.image.BufferedImage getTileImage(Color background, Color foreground) | public final IImage getTileIImage(Color background, Color foreground) |
El soporte de la API para Graphics2D será descontinuado
Los métodos con Graphics2D están declarados como obsoletos y su soporte se eliminará de la API pública.
La parte de la API que lo usa se eliminará:
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics)
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, float scaleX, float scaleY)
- public final void renderToGraphics(IRenderingOptions options, Graphics2D graphics, Dimension renderingSize)
FAQ
¿Cuál es el beneficio práctico de IImage en comparación con Image/Bitmap?
IImage unifica el trabajo con imágenes raster y vectoriales y simplifica el guardado en varios formatos mediante ImageFormat.
¿Afectará la API moderna al rendimiento de la generación de miniaturas?
Cambiar de getThumbnail a getImage no empeora los escenarios: los nuevos métodos ofrecen las mismas capacidades para producir imágenes con opciones y tamaños, conservando el soporte para opciones de renderizado. La ganancia o pérdida específica depende del escenario, pero funcionalmente los reemplazos son equivalentes.