Gestionar marcos de imagen en presentaciones en Android
Introducción
Un marco de imagen es una forma que contiene una imagen; es como una foto en un marco.
Puedes añadir una imagen a una diapositiva a través de un marco de imagen. De este modo, puedes dar formato a la imagen formateando el marco de imagen.
Tip
Aspose ofrece conversores gratuitos—JPEG a PowerPoint y PNG a PowerPoint—que permiten crear presentaciones rápidamente a partir de imágenes.Crear un marco de imagen
- Crea una instancia de la clase Presentation.
- Obtén la referencia de una diapositiva mediante su índice.
- Crea un objeto IPPImage añadiendo una imagen a la IImagescollection asociada al objeto presentation que se usará para rellenar la forma.
- Especifica el ancho y alto de la imagen.
- Crea un PictureFrame basado en el ancho y alto de la imagen mediante el método
AddPictureFrameexpuesto por el objeto shape asociado a la diapositiva referenciada. - Añade un marco de imagen (que contiene la foto) a la diapositiva.
- Guarda la presentación modificada como archivo PPTX.
Este código Java muestra cómo crear un marco de imagen:
// Instancia la clase Presentation que representa un archivo PPTX
Presentation pres = new Presentation();
try {
// Obtiene la primera diapositiva
ISlide sld = pres.getSlides().get_Item(0);
// Instancia la clase Image
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Añade un marco de imagen con la altura y anchura equivalentes de la imagen
sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Escribe el archivo PPTX en disco
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Crear un marco de imagen con escala relativa
Al modificar la escala relativa de una imagen, puedes crear un marco de imagen más complejo.
- Crea una instancia de la clase Presentation.
- Obtén la referencia de una diapositiva mediante su índice.
- Añade una imagen a la colección de imágenes de la presentación.
- Crea un objeto IPPImage añadiendo una imagen a la IImagescollection asociada al objeto presentation que se usará para rellenar la forma.
- Especifica el ancho y alto relativos de la imagen en el marco de imagen.
- Guarda la presentación modificada como archivo PPTX.
Este código Java muestra cómo crear un marco de imagen con escala relativa:
// Instancia la clase Presentation que representa el PPTX
Presentation pres = new Presentation();
try {
// Obtiene la primera diapositiva
ISlide sld = pres.getSlides().get_Item(0);
// Instancia la clase Image
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Añade un marco de imagen con la altura y anchura equivalentes de la imagen
IPictureFrame pf = sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Establece la escala relativa de altura y anchura
pf.setRelativeScaleHeight(0.8f);
pf.setRelativeScaleWidth(1.35f);
// Escribe el archivo PPTX en disco
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Extraer imágenes raster de marcos de imagen
Puedes extraer imágenes raster de objetos PictureFrame y guardarlas en PNG, JPG y otros formatos. El siguiente ejemplo de código demuestra cómo extraer una imagen del documento “sample.pptx” y guardarla en formato PNG.
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
IShape firstShape = firstSlide.getShapes().get_Item(0);
if (firstShape instanceof IPictureFrame) {
IPictureFrame pictureFrame = (IPictureFrame) firstShape;
try {
IImage slideImage = pictureFrame.getPictureFormat().getPicture().getImage().getImage();
slideImage.save("slide_1_shape_1.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
}
} catch (IOException e) {
} finally {
presentation.dispose();
}
Extraer imágenes SVG de marcos de imagen
Cuando una presentación contiene gráficos SVG insertados dentro de formas PictureFrame, Aspose.Slides for Android mediante Java permite recuperar las imágenes vectoriales originales con plena fidelidad. Recorriendo la colección de formas de la diapositiva, puedes identificar cada PictureFrame, comprobar si el IPPImage subyacente contiene contenido SVG y, a continuación, guardar esa imagen en disco o en un flujo en su formato SVG nativo.
El siguiente ejemplo de código muestra cómo extraer una imagen SVG de un marco de imagen:
Presentation presentation = new Presentation("sample.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IShape shape = slide.getShapes().get_Item(0);
if (shape instanceof IPictureFrame) {
IPictureFrame pictureFrame = (IPictureFrame) shape;
ISvgImage svgImage = pictureFrame.getPictureFormat().getPicture().getImage().getSvgImage();
FileOutputStream fos = new FileOutputStream("output.svg");
fos.write(svgImage.getSvgData());
fos.close();
}
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
presentation.dispose();
}
Obtener la transparencia de una imagen
Aspose.Slides permite obtener el efecto de transparencia aplicado a una imagen. Este código Java muestra la operación:
Presentation presentation = new Presentation("Test.pptx");
var pictureFrame = (IPictureFrame) presentation.getSlides().get_Item(0).getShapes().get_Item(0);
var imageTransform = pictureFrame.getPictureFormat().getPicture().getImageTransform();
for (var effect : imageTransform) {
if (effect instanceof IAlphaModulateFixed) {
var alphaModulateFixed = (IAlphaModulateFixed) effect;
var transparencyValue = 100 - alphaModulateFixed.getAmount();
System.out.println("Picture transparency: " + transparencyValue);
}
}
Formato de marcos de imagen
Aspose.Slides ofrece muchas opciones de formato que pueden aplicarse a un marco de imagen. Con esas opciones, puedes modificar un marco de imagen para que cumpla requisitos específicos.
- Crea una instancia de la clase Presentation.
- Obtén la referencia de una diapositiva mediante su índice.
- Crea un objeto IPPImage añadiendo una imagen a la IImagescollection asociada al objeto presentation que se usará para rellenar la forma.
- Especifica el ancho y alto de la imagen.
- Crea un
PictureFramebasado en el ancho y alto de la imagen mediante el método AddPictureFrame expuesto por el objeto IShapes asociado a la diapositiva referenciada. - Añade el marco de imagen (que contiene la foto) a la diapositiva.
- Establece el color de línea del marco de imagen.
- Establece el ancho de línea del marco de imagen.
- Gira el marco de imagen asignándole un valor positivo o negativo.
- Un valor positivo rota la imagen en sentido horario.
- Un valor negativo rota la imagen en sentido antihorario.
- Añade el marco de imagen (que contiene la foto) a la diapositiva.
- Guarda la presentación modificada como archivo PPTX.
Este código Java muestra el proceso de formato de marcos de imagen:
// Instancia la clase Presentation que representa el PPTX
Presentation pres = new Presentation();
try {
// Obtiene la primera diapositiva
ISlide sld = pres.getSlides().get_Item(0);
// Instancia la clase Image
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Añade un marco de imagen con la altura y anchura equivalentes de la imagen
IPictureFrame pf = sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Aplica algo de formato al PictureFrameEx
pf.getLineFormat().getFillFormat().setFillType(FillType.Solid);
pf.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
pf.getLineFormat().setWidth(20);
pf.setRotation(45);
// Escribe el archivo PPTX en disco
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}