Cadre Photo
Un cadre photo est une forme qui contient une image—c’est comme une photo dans un cadre.
Vous pouvez ajouter une image à une diapositive via un cadre photo. De cette manière, vous pouvez formater l’image en formatant le cadre photo.
Astuce
Aspose fournit des convertisseurs gratuits—JPEG vers PowerPoint et PNG vers PowerPoint—qui permettent aux utilisateurs de créer rapidement des présentations à partir d’images.Créer un Cadre Photo
- Créez une instance de la classe Presentation.
- Obtenez la référence d’une diapositive par son index.
- Créez un objet IPPImage en ajoutant une image à la IImagescollection associée à l’objet de présentation qui sera utilisé pour remplir la forme.
- Spécifiez la largeur et la hauteur de l’image.
- Créez un PictureFrame en fonction de la largeur et de la hauteur de l’image grâce à la méthode
AddPictureFrame
exposée par l’objet forme associé à la diapositive référencée. - Ajoutez un cadre photo (contenant l’image) à la diapositive.
- Écrivez la présentation modifiée sous forme de fichier PPTX.
Ce code Java vous montre comment créer un cadre photo :
// Instancie la classe Presentation qui représente un fichier PPTX
Presentation pres = new Presentation();
try {
// Obtient la première diapositive
ISlide sld = pres.getSlides().get_Item(0);
// Instancie la classe Image
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Ajoute un cadre photo avec la hauteur et la largeur équivalentes à celles de l'image
sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Écrit le fichier PPTX sur le disque
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Créer un Cadre Photo avec Échelle Relative
En modifiant l’échelle relative d’une image, vous pouvez créer un cadre photo plus compliqué.
- Créez une instance de la classe Presentation.
- Obtenez la référence d’une diapositive par son index.
- Ajoutez une image à la collection d’images de la présentation.
- Créez un objet IPPImage en ajoutant une image à la IImagescollection associée à l’objet de présentation qui sera utilisé pour remplir la forme.
- Spécifiez la largeur et la hauteur relatives de l’image dans le cadre photo.
- Écrivez la présentation modifiée sous forme de fichier PPTX.
Ce code Java vous montre comment créer un cadre photo avec échelle relative :
// Instancie la classe Presentation qui représente le PPTX
Presentation pres = new Presentation();
try {
// Obtient la première diapositive
ISlide sld = pres.getSlides().get_Item(0);
// Instancie la classe Image
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Ajoute le cadre photo avec la hauteur et la largeur équivalentes à celles de l'image
IPictureFrame pf = sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Réglage de l'échelle relative de la largeur et de la hauteur
pf.setRelativeScaleHeight(0.8f);
pf.setRelativeScaleWidth(1.35f);
// Écrit le fichier PPTX sur le disque
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Extraire une Image d’un Cadre Photo
Vous pouvez extraire des images d’objets PictureFrame et les enregistrer au format PNG, JPG et autres. L’exemple de code ci-dessous montre comment extraire une image du document “sample.pptx” et l’enregistrer au format 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();
}
Obtenir la Transparence d’une Image
Aspose.Slides vous permet d’obtenir la transparence d’une image. Ce code Java démontre l’opération :
Presentation presentation = new Presentation(folderPath + "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("Transparence de l'image : " + transparencyValue);
}
}
Mise en Forme du Cadre Photo
Aspose.Slides propose de nombreuses options de mise en forme qui peuvent être appliquées à un cadre photo. En utilisant ces options, vous pouvez modifier un cadre photo pour le faire correspondre à des exigences spécifiques.
- Créez une instance de la classe Presentation.
- Obtenez la référence d’une diapositive par son index.
- Créez un objet IPPImage en ajoutant une image à la IImagescollection associée à l’objet de présentation qui sera utilisé pour remplir la forme.
- Spécifiez la largeur et la hauteur de l’image.
- Créez un
PictureFrame
basé sur la largeur et la hauteur de l’image grâce à la méthode AddPictureFrame exposée par l’objet IShapes associé à la diapositive référencée. - Ajoutez le cadre photo (contenant l’image) à la diapositive.
- Définissez la couleur de ligne du cadre photo.
- Définissez la largeur de ligne du cadre photo.
- Faites pivoter le cadre photo en lui donnant une valeur positive ou négative.
- Une valeur positive fait tourner l’image dans le sens des aiguilles d’une montre.
- Une valeur négative fait tourner l’image dans le sens inverse des aiguilles d’une montre.
- Ajoutez le cadre photo (contenant l’image) à la diapositive.
- Écrivez la présentation modifiée sous forme de fichier PPTX.
Ce code Java montre le processus de mise en forme du cadre photo :
// Instancie la classe Presentation qui représente le PPTX
Presentation pres = new Presentation();
try {
// Obtient la première diapositive
ISlide sld = pres.getSlides().get_Item(0);
// Instancie la classe Image
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Ajoute un cadre photo avec la hauteur et la largeur équivalentes à celles de l'image
IPictureFrame pf = sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Applique quelques mises en forme au PictureFrameEx
pf.getLineFormat().getFillFormat().setFillType(FillType.Solid);
pf.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
pf.getLineFormat().setWidth(20);
pf.setRotation(45);
// Écrit le fichier PPTX sur le disque
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Astuce
Aspose a récemment développé un Créateur de Collages gratuit. Si vous avez besoin de fusionner des images JPG/JPEG ou PNG, créer des grilles à partir de photos, vous pouvez utiliser ce service.Ajouter une Image en Lien
Pour éviter des tailles de présentation importantes, vous pouvez ajouter des images (ou des vidéos) via des liens au lieu d’intégrer directement les fichiers dans les présentations. Ce code Java vous montre comment ajouter une image et une vidéo dans un espace réservé :
Presentation presentation = new Presentation("input.pptx");
try {
ArrayList<IShape> shapesToRemove = new ArrayList<IShape>();
int shapesCount = presentation.getSlides().get_Item(0).getShapes().size();
for (int i = 0; i < shapesCount; i++)
{
IShape autoShape = presentation.getSlides().get_Item(0).getShapes().get_Item(i);
if (autoShape.getPlaceholder() == null)
{
continue;
}
switch (autoShape.getPlaceholder().getType())
{
case PlaceholderType.Picture:
IPictureFrame pictureFrame = presentation.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle,
autoShape.getX(), autoShape.getY(), autoShape.getWidth(), autoShape.getHeight(), null);
pictureFrame.getPictureFormat().getPicture().setLinkPathLong(
"https://upload.wikimedia.org/wikipedia/commons/3/3a/I.M_at_Old_School_Public_Broadcasting_in_October_2016_02.jpg");
shapesToRemove.add(autoShape);
break;
case PlaceholderType.Media:
IVideoFrame videoFrame = presentation.getSlides().get_Item(0).getShapes().addVideoFrame(
autoShape.getX(), autoShape.getY(), autoShape.getWidth(), autoShape.getHeight(), "");
videoFrame.getPictureFormat().getPicture().setLinkPathLong(
"https://upload.wikimedia.org/wikipedia/commons/3/3a/I.M_at_Old_School_Public_Broadcasting_in_October_2016_02.jpg");
videoFrame.setLinkPathLong("https://youtu.be/t_1LYZ102RA");
shapesToRemove.add(autoShape);
break;
}
}
for (IShape shape : shapesToRemove)
{
presentation.getSlides().get_Item(0).getShapes().remove(shape);
}
presentation.save("output.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
Rogner une Image
Ce code Java vous montre comment rogner une image existante sur une diapositive :
Presentation pres = new Presentation();
// Crée un nouvel objet image
try {
IPPImage picture;
IImage image = Images.fromFile(imagePath);
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Ajoute un PictureFrame à une diapositive
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(
ShapeType.Rectangle, 100, 100, 420, 250, picture);
// Rogne l'image (valeurs en pourcentage)
picFrame.getPictureFormat().setCropLeft(23.6f);
picFrame.getPictureFormat().setCropRight(21.5f);
picFrame.getPictureFormat().setCropTop(3);
picFrame.getPictureFormat().setCropBottom(31);
// Enregistre le résultat
pres.save(outPptxFile, SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Supprimer les Zones Rognées de l’Image
Si vous souhaitez supprimer les zones rognées d’une image contenue dans un cadre, vous pouvez utiliser la méthode deletePictureCroppedAreas(). Cette méthode retourne l’image rognée ou l’image d’origine si le rognage n’est pas nécessaire.
Ce code Java démontre l’opération :
Presentation presentation = new Presentation("PictureFrameCrop.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Obtient le PictureFrame de la première diapositive
IPictureFrame picFrame = (IPictureFrame)slide.getShapes().get_Item(0);
// Supprime les zones rognées de l'image du PictureFrame et retourne l'image rognée
IPPImage croppedImage = picFrame.getPictureFormat().deletePictureCroppedAreas();
// Enregistre le résultat
presentation.save("PictureFrameDeleteCroppedAreas.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
NOTE
La méthode deletePictureCroppedAreas() ajoute l’image rognée à la collection d’images de la présentation. Si l’image est uniquement utilisée dans le PictureFrame traité, cette configuration peut réduire la taille de la présentation. Sinon, le nombre d’images dans la présentation résultante augmentera.
Cette méthode convertit les fichiers WMF/EMF en images PNG raster lors de l’opération de rognage.
Verrouiller le Rapport d’Aspect
Si vous souhaitez qu’une forme contenant une image conserve son rapport d’aspect même après avoir modifié les dimensions de l’image, vous pouvez utiliser la méthode setAspectRatioLocked pour définir le paramètre Verrouiller le Rapport d’Aspect.
Ce code Java vous montre comment verrouiller le rapport d’aspect d’une forme :
Presentation pres = new Presentation("pres.pptx");
try {
ILayoutSlide layout = pres.getLayoutSlides().getByType(SlideLayoutType.Custom);
ISlide emptySlide = pres.getSlides().addEmptySlide(layout);
IPPImage picture;
IImage image = Images.fromFile("image.png");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
IPictureFrame pictureFrame = emptySlide.getShapes().addPictureFrame(
ShapeType.Rectangle, 50, 150, presImage.getWidth(), presImage.getHeight(), picture);
// Définit la forme pour préserver le rapport d'aspect lors du redimensionnement
pictureFrame.getPictureFrameLock().setAspectRatioLocked(true);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
NOTE
Ce paramètre Verrouiller le Rapport d’Aspect préserve uniquement le rapport d’aspect de la forme et non l’image qu’elle contient.Utiliser la Propriété StretchOff
En utilisant les propriétés StretchOffsetLeft, StretchOffsetTop, StretchOffsetRight et StretchOffsetBottom de l’interface IPictureFillFormat et de la classe PictureFillFormat, vous pouvez spécifier un rectangle de remplissage.
Lorsque le redimensionnement est spécifié pour une image, un rectangle source est mis à l’échelle pour s’adapter au rectangle de remplissage spécifié. Chaque bord du rectangle de remplissage est défini par un décalage de pourcentage par rapport au bord correspondant de la zone de délimitation de la forme. Un pourcentage positif spécifie un retrait tandis qu’un pourcentage négatif spécifie un saillant.
- Créez une instance de la classe Presentation.
- Obtenez la référence d’une diapositive par son index.
- Ajoutez une forme rectangulaire
AutoShape
. - Créez une image.
- Définissez le type de remplissage de la forme.
- Définissez le mode de remplissage de l’image de la forme.
- Ajoutez une image définie pour remplir la forme.
- Spécifiez les décalages d’image par rapport au bord correspondant de la zone de délimitation de la forme.
- Écrivez la présentation modifiée sous forme de fichier PPTX.
Ce code Java démontre un processus dans lequel une propriété StretchOff est utilisée :
// Instancie la classe Presentation qui représente un fichier PPTX
Presentation pres = new Presentation();
try {
// Obtient la première diapositive
ISlide slide = pres.getSlides().get_Item(0);
// Instancie la classe ImageEx
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Ajoute une AutoShape définie en Rectangle
IAutoShape aShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// Définit le type de remplissage de la forme
aShape.getFillFormat().setFillType(FillType.Picture);
// Définit le mode de remplissage de l'image de la forme
aShape.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.Stretch);
// Définit l'image pour remplir la forme
aShape.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// Spécifie les décalages d'image par rapport au bord correspondant de la zone de délimitation de la forme
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetLeft(25);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetRight(25);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetTop(-20);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetBottom(-10);
// Écrit le fichier PPTX sur le disque
pres.save("StretchOffsetLeftForPictureFrame_out.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}