Cadre d'image
Un cadre d’image 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 d’image. Ainsi, vous pouvez formater l’image en formatant le cadre d’image.
Astuce
Aspose fournit des convertisseurs gratuits - JPEG to PowerPoint et PNG to PowerPoint - qui permettent de créer rapidement des présentations à partir d’images.Créer un cadre d’image
- Créez une instance de la classe Presentation.
- Obtenez une référence à une diapositive via son indice.
- Créez un objet
PPImageen ajoutant une image à la ImagesCollection 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 via la méthode
addPictureFrameexposée par l’objet forme associé à la diapositive référencée. - Ajoutez un cadre d’image (contenant la photo) à la diapositive.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
// Instancie la classe Presentation qui représente un fichier PPTX
var pres = new aspose.slides.Presentation();
try {
// Obtient la première diapositive
var sld = pres.getSlides().get_Item(0);
// Instancie la classe Image
var imgx = pres.getImages().addImage(java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "asp1.jpg")));
// Ajoute un cadre d'image avec la même hauteur et largeur que l'image
sld.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Enregistre le fichier PPTX sur le disque
pres.save("RectPicFrame.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
Créer un cadre d’image avec mise à l’échelle relative
En modifiant la mise à l’échelle relative d’une image, vous pouvez créer un cadre d’image plus complexe.
- Créez une instance de la classe Presentation.
- Obtenez une référence à une diapositive via son indice.
- Ajoutez une image à la collection d’images de la présentation.
- Créez un objet PPImage en ajoutant une image à la ImagesCollection 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 d’image.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
// Instancie la classe Presentation qui représente le PPTX
var pres = new aspose.slides.Presentation();
try {
// Obtient la première diapositive
var sld = pres.getSlides().get_Item(0);
// Instancie la classe Image
var imgx = pres.getImages().addImage(java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "asp1.jpg")));
// Ajoute un cadre d'image avec la même hauteur et largeur que l'image
var pf = sld.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Définit l'échelle relative de la largeur et de la hauteur
pf.setRelativeScaleHeight(0.8);
pf.setRelativeScaleWidth(1.35);
// Enregistre le fichier PPTX sur le disque
pres.save("RectPicFrame.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
Extraire des images raster depuis les cadres d’image
Vous pouvez extraire des images raster des 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.
var presentation = new aspose.slides.Presentation("sample.pptx");
try {
var firstSlide = presentation.getSlides().get_Item(0);
var firstShape = firstSlide.getShapes().get_Item(0);
if (java.instanceOf(firstShape, "com.aspose.slides.IPictureFrame")) {
var pictureFrame = firstShape;
try {
var slideImage = pictureFrame.getPictureFormat().getPicture().getImage().getImage();
slideImage.save("slide_1_shape_1.png", aspose.slides.ImageFormat.Png);
} finally {
if (slideImage != null) {
slideImage.dispose();
}
}
}
} catch (e) {console.log(e);
} finally {
presentation.dispose();
}
Extraire des images SVG depuis les cadres d’image
Lorsque une présentation contient des graphiques SVG placés à l’intérieur de formes PictureFrame , Aspose.Slides pour Node.js via Java vous permet de récupérer les images vectorielles originales avec une fidélité totale. En parcourant la collection de formes de la diapositive, vous pouvez identifier chaque PictureFrame, vérifier si le PPImage sous‑jacent contient du contenu SVG, puis enregistrer cette image sur le disque ou dans un flux au format SVG natif.
L’exemple de code suivant montre comment extraire une image SVG d’un cadre d’image :
var presentation = new aspose.slides.Presentation("sample.pptx");
try {
var slide = presentation.getSlides().get_Item(0);
var shape = slide.getShapes().get_Item(0);
if (java.instanceOf(shape, "com.aspose.slides.IPictureFrame")) {
const svgImage = shape.getPictureFormat().getPicture().getImage().getSvgImage();
if (svgImage) {
fs.writeFileSync("output.svg", svgImage.getSvgData());
}
}
} catch (e) {
console.log(e);
} finally {
presentation.dispose();
}
Obtenir la transparence d’une image
Aspose.Slides vous permet d’obtenir l’effet de transparence appliqué à une image. Ce code JavaScript montre l’opération :
var presentation = new aspose.slides.Presentation("Test.pptx");
var pictureFrame = presentation.getSlides().get_Item(0).getShapes().get_Item(0);
var imageTransform = pictureFrame.getPictureFormat().getPicture().getImageTransform();
for (var i = 0; i < imageTransform.size(); i++) {
var effect = imageTransform.get_Item(i);
if (java.instanceOf(effect, "com.aspose.slides.IAlphaModulateFixed")) {
var alphaModulateFixed = effect;
var transparencyValue = 100 - alphaModulateFixed.getAmount();
console.log("Picture transparency: " + transparencyValue);
}
}
Mise en forme du cadre d’image
Aspose.Slides fournit de nombreuses options de mise en forme qui peuvent être appliquées à un cadre d’image. En utilisant ces options, vous pouvez modifier un cadre d’image pour qu’il réponde à des exigences spécifiques.
- Créez une instance de la classe Presentation.
- Obtenez une référence à une diapositive via son indice.
- Créez un objet
PPImageen ajoutant une image à la ImagesCollection 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
PictureFramebasé sur la largeur et la hauteur de l’image via la méthode addPictureFrame exposée par l’objet Shapes associé à la diapositive référencée. - Ajoutez le cadre d’image (contenant la photo) à la diapositive.
- Définissez la couleur de la bordure du cadre d’image.
- Définissez l’épaisseur de la bordure du cadre d’image.
- Faites pivoter le cadre d’image en lui attribuant une valeur positive ou négative.
- Une valeur positive fait pivoter l’image dans le sens des aiguilles d’une montre.
- Une valeur négative fait pivoter l’image dans le sens inverse des aiguilles d’une montre.
- Ajoutez le cadre d’image (contenant la photo) à la diapositive.
- Enregistrez la présentation modifiée en tant que fichier PPTX.
// Instancie la classe Presentation qui représente le PPTX
var pres = new aspose.slides.Presentation();
try {
// Obtient la première diapositive
var sld = pres.getSlides().get_Item(0);
// Instancie la classe Image
var imgx = pres.getImages().addImage(java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "asp1.jpg")));
// Ajoute un cadre d'image avec la même hauteur et largeur que l'image
var pf = sld.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Applique un certain formatage à PictureFrameEx
pf.getLineFormat().getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Solid));
pf.getLineFormat().getFillFormat().getSolidFillColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLUE"));
pf.getLineFormat().setWidth(20);
pf.setRotation(45);
// Enregistre le fichier PPTX sur le disque
pres.save("RectPicFrame.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(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, ou de créer des grilles à partir de photos, vous pouvez utiliser ce service.Ajouter une image en tant que lien
Pour éviter des présentations volumineuses, vous pouvez ajouter des images (ou vidéos) via des liens au lieu d’incorporer les fichiers directement dans les présentations. Ce code JavaScript montre comment ajouter une image et une vidéo dans un espace réservé :
var presentation = new aspose.slides.Presentation("input.pptx");
try {
var shapesToRemove = java.newInstanceSync("java.util.ArrayList");
var shapesCount = presentation.getSlides().get_Item(0).getShapes().size();
for (var i = 0; i < shapesCount; i++) {
var autoShape = presentation.getSlides().get_Item(0).getShapes().get_Item(i);
if (autoShape.getPlaceholder() == null) {
continue;
}
switch (autoShape.getPlaceholder().getType()) {
case aspose.slides.PlaceholderType.Picture :
var pictureFrame = presentation.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.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 aspose.slides.PlaceholderType.Media :
var 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 (var i = 0; i < shapesToRemove.length; i++) {
var shape = shapesToRemove.get_Item(i);
presentation.getSlides().get_Item(0).getShapes().remove(shape);
}
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Rogner une image
Ce code JavaScript montre comment rogner une image existante sur une diapositive :
var pres = new aspose.slides.Presentation();
// Crée un nouvel objet image
try {
var picture;
var image = aspose.slides.Images.fromFile(imagePath);
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
// Ajoute un PictureFrame à une diapositive
var picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 100, 100, 420, 250, picture);
// Recadre l'image (valeurs en pourcentage)
picFrame.getPictureFormat().setCropLeft(23.6);
picFrame.getPictureFormat().setCropRight(21.5);
picFrame.getPictureFormat().setCropTop(3);
picFrame.getPictureFormat().setCropBottom(31);
// Enregistre le résultat
pres.save(outPptxFile, aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
Supprimer les zones rognées d’un cadre d’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 renvoie l’image rognée ou l’image d’origine si le rognage n’est pas nécessaire.
Ce code JavaScript montre l’opération :
var presentation = new aspose.slides.Presentation("PictureFrameCrop.pptx");
try {
var slide = presentation.getSlides().get_Item(0);
// Obtient le PictureFrame de la première diapositive
var picFrame = slide.getShapes().get_Item(0);
// Supprime les zones rognées de l'image du PictureFrame et renvoie l'image rognée
var croppedImage = picFrame.getPictureFormat().deletePictureCroppedAreas();
// Enregistre le résultat
presentation.save("PictureFrameDeleteCroppedAreas.pptx", aspose.slides.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 n’est utilisée que 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 méta‑fichiers WMF/EMF en image PNG raster lors de l’opération de rognage.
Verrouiller le ratio d’aspect
Si vous souhaitez qu’une forme contenant une image conserve son ratio 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 Lock Aspect Ratio.
var pres = new aspose.slides.Presentation("pres.pptx");
try {
var layout = pres.getLayoutSlides().getByType(aspose.slides.SlideLayoutType.Custom);
var emptySlide = pres.getSlides().addEmptySlide(layout);
var picture;
var image = aspose.slides.Images.fromFile("image.png");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
var pictureFrame = emptySlide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 50, 150, presImage.getWidth(), presImage.getHeight(), picture);
// définir la forme pour qu'elle conserve le ratio d'aspect lors du redimensionnement
pictureFrame.getPictureFrameLock().setAspectRatioLocked(true);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
NOTE
Ce paramètre Lock Aspect Ratio ne préserve que le ratio d’aspect de la forme et non celui de l’image qu’elle contient.Utiliser la propriété StretchOff
En utilisant les méthodes setStretchOffsetLeft, setStretchOffsetTop, setStretchOffsetRight et setStretchOffsetBottom 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 indiqué. Chaque bord du rectangle de remplissage est défini par un décalage en pourcentage par rapport au bord correspondant de la boîte englobante de la forme. Un pourcentage positif indique un retrait tandis qu’un pourcentage négatif indique une extrusion.
- Créez une instance de la classe Presentation.
- Obtenez une référence à une diapositive via son indice.
- Ajoutez un rectangle
AutoShape. - Créez une image.
- Définissez le type de remplissage de la forme.
- Définissez le mode de remplissage d’image de la forme.
- Ajoutez une image définie pour remplir la forme.
- Spécifiez les décalages de l’image par rapport au bord correspondant de la boîte englobante de la forme
- Enregistrez la présentation modifiée en tant que fichier PPTX.
// Instancie la classe Presentation qui représente un fichier PPTX
var pres = new aspose.slides.Presentation();
try {
// Obtient la première diapositive
var slide = pres.getSlides().get_Item(0);
// Instancie la classe ImageEx
var picture;
var image = aspose.slides.Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
// Ajoute une AutoShape de type Rectangle
var aShape = slide.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 100, 100, 300, 300);
// Définit le type de remplissage de la forme
aShape.getFillFormat().setFillType(java.newByte(aspose.slides.FillType.Picture));
// Définit le mode de remplissage d'image de la forme
aShape.getFillFormat().getPictureFillFormat().setPictureFillMode(aspose.slides.PictureFillMode.Stretch);
// Définit l'image pour remplir la forme
aShape.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// Spécifie les décalages de l'image par rapport au bord correspondant de la boîte englobante de la forme
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetLeft(25);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetRight(25);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetTop(-20);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetBottom(-10);
// Enregistre le fichier PPTX sur le disque
pres.save("StretchOffsetLeftForPictureFrame_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
FAQ
Comment savoir quels formats d’image sont pris en charge pour PictureFrame ?
Aspose.Slides prend en charge à la fois les images raster (PNG, JPEG, BMP, GIF, etc.) et les images vectorielles (par exemple, SVG) via l’objet image assigné à un PictureFrame. La liste des formats pris en charge chevauche généralement les capacités du moteur de conversion de diapositives et d’images.
Comment l’ajout de dizaines d’images volumineuses affecte-t-il la taille et les performances du PPTX ?
L’intégration d’images volumineuses augmente la taille du fichier et l’utilisation de la mémoire ; le fait de lier les images permet de réduire la taille de la présentation mais nécessite que les fichiers externes restent accessibles. Aspose.Slides offre la possibilité d’ajouter des images par lien afin de réduire la taille du fichier.
Comment puis‑je verrouiller un objet image contre tout déplacement/redimensionnement accidentel ?
Utilisez les verrous de forme pour un PictureFrame (par exemple, désactiver le déplacement ou le redimensionnement). Le mécanisme de verrouillage est décrit pour les formes dans un article de protection distinct et est pris en charge pour divers types de formes, y compris les PictureFrame.
La fidélité du vecteur SVG est‑elle conservée lors de l’exportation d’une présentation en PDF/images ?
Aspose.Slides permet d’extraire un SVG d’un PictureFrame en tant que vecteur original. Lors de l'exportation vers PDF ou vers des formats raster, le résultat peut être rasterisé en fonction des paramètres d’exportation ; le fait que le SVG original soit stocké comme vecteur est confirmé par le comportement d’extraction.