Verwalten von Bildrahmen in Präsentationen auf Android
Ein Bildrahmen ist eine Form, die ein Bild enthält – er ist wie ein Bild in einem Rahmen.
Sie können einem Folienobjekt ein Bild über einen Bildrahmen hinzufügen. Auf diese Weise können Sie das Bild formatieren, indem Sie den Bildrahmen formatieren.
Hinweis
Aspose bietet kostenlose Konverter – JPEG nach PowerPoint und PNG nach PowerPoint – die es ermöglichen, schnell Präsentationen aus Bildern zu erstellen.Bildrahmen erstellen
- Erstellen Sie eine Instanz der Presentation-Klasse.
- Holen Sie sich die Referenz einer Folie über ihren Index.
- Erstellen Sie ein IPPImage‑Objekt, indem Sie ein Bild zur IImagescollection hinzufügen, die dem Präsentationsobjekt zugeordnet ist und zum Füllen der Form verwendet wird.
- Geben Sie die Breite und Höhe des Bildes an.
- Erstellen Sie ein PictureFrame basierend auf Breite und Höhe des Bildes über die
AddPictureFrame‑Methode, die vom Form‑Objekt der referenzierten Folie bereitgestellt wird. - Fügen Sie der Folie einen Bildrahmen (mit dem Bild) hinzu.
- Schreiben Sie die geänderte Präsentation als PPTX‑Datei.
Dieser Java‑Code zeigt, wie Sie einen Bildrahmen erstellen:
// Instanziert die Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation();
try {
// Holt die erste Folie
ISlide sld = pres.getSlides().get_Item(0);
// Instanziert die Image-Klasse
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Fügt einen Bildrahmen mit der entsprechenden Höhe und Breite des Bildes hinzu
sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Schreibt die PPTX-Datei auf die Festplatte
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Bildrahmen mit relativer Skalierung erstellen
Durch Ändern der relativen Skalierung eines Bildes können Sie einen komplexeren Bildrahmen erzeugen.
- Erstellen Sie eine Instanz der Presentation-Klasse.
- Holen Sie sich die Referenz einer Folie über ihren Index.
- Fügen Sie ein Bild zur Bildersammlung der Präsentation hinzu.
- Erstellen Sie ein IPPImage-Objekt, indem Sie ein Bild zur IImagescollection hinzufügen, die dem Präsentationsobjekt zugeordnet ist und zum Füllen der Form verwendet wird.
- Geben Sie die relative Breite und Höhe des Bildes im Bildrahmen an.
- Schreiben Sie die geänderte Präsentation als PPTX‑Datei.
Dieser Java‑Code zeigt, wie Sie einen Bildrahmen mit relativer Skalierung erstellen:
// Instanziert die Presentation-Klasse, die die PPTX darstellt
Presentation pres = new Presentation();
try {
// Holt die erste Folie
ISlide sld = pres.getSlides().get_Item(0);
// Instanziert die Image-Klasse
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Fügt einen Bildrahmen mit Höhe und Breite des Bildes hinzu
IPictureFrame pf = sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Setzt relative Skalierung für Höhe und Breite
pf.setRelativeScaleHeight(0.8f);
pf.setRelativeScaleWidth(1.35f);
// Schreibt die PPTX-Datei auf die Festplatte
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Rasterbilder aus Bildrahmen extrahieren
Sie können Rasterbilder aus PictureFrame-Objekten extrahieren und sie im PNG‑, JPG‑ oder anderen Formaten speichern. Das folgende Codebeispiel demonstriert, wie ein Bild aus der Datei „sample.pptx“ extrahiert und im PNG‑Format gespeichert wird.
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();
}
SVG‑Bilder aus Bildrahmen extrahieren
Enthält eine Präsentation SVG‑Grafiken, die in PictureFrame-Formen platziert sind, ermöglicht Aspose.Slides für Android via Java das Abrufen der ursprünglichen Vektorbilder in voller Treue. Durch Durchlaufen der Formsammlung einer Folie können Sie jedes PictureFrame erkennen, prüfen, ob das zugrunde liegende IPPImage SVG‑Inhalte enthält, und das Bild anschließend im nativen SVG‑Format auf Datenträger oder in einen Stream speichern.
Der folgende Code demonstriert das Extrahieren eines SVG‑Bildes aus einem Bildrahmen:
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();
}
Transparenz eines Bildes ermitteln
Aspose.Slides ermöglicht das Ermitteln des auf ein Bild angewendeten Transparenzeffekts. Dieser Java‑Code demonstriert die Vorgehensweise:
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);
}
}
Bildrahmen formatieren
Aspose.Slides bietet zahlreiche Formatierungsoptionen, die auf einen Bildrahmen angewendet werden können. Mit diesen Optionen können Sie einen Bildrahmen so anpassen, dass er speziellen Anforderungen entspricht.
- Erstellen Sie eine Instanz der Presentation-Klasse.
- Holen Sie sich die Referenz einer Folie über ihren Index.
- Erstellen Sie ein IPPImage-Objekt, indem Sie ein Bild zur IImagescollection hinzufügen, die dem Präsentationsobjekt zugeordnet ist und zum Füllen der Form verwendet wird.
- Geben Sie die Breite und Höhe des Bildes an.
- Erstellen Sie ein
PictureFramebasierend auf Breite und Höhe des Bildes über die AddPictureFrame‑Methode, die vom IShapes-Objekt der referenzierten Folie bereitgestellt wird. - Fügen Sie den Bildrahmen (mit dem Bild) der Folie hinzu.
- Setzen Sie die Linienfarbe des Bildrahmens.
- Setzen Sie die Linienbreite des Bildrahmens.
- Drehen Sie den Bildrahmen, indem Sie ihm einen positiven oder negativen Wert zuweisen.
- Ein positiver Wert dreht das Bild im Uhrzeigersinn.
- Ein negativer Wert dreht das Bild gegen den Uhrzeigersinn.
- Fügen Sie den Bildrahmen (mit dem Bild) erneut der Folie hinzu.
- Schreiben Sie die geänderte Präsentation als PPTX‑Datei.
Dieser Java‑Code demonstriert den Formatierungsprozess für Bildrahmen:
// Instanziert die Presentation-Klasse, die die PPTX darstellt
Presentation pres = new Presentation();
try {
// Holt die erste Folie
ISlide sld = pres.getSlides().get_Item(0);
// Instanziert die Image-Klasse
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Fügt einen Bildrahmen mit der gleichen Höhe und Breite wie das Bild hinzu
IPictureFrame pf = sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Wendet einige Formatierungen auf PictureFrameEx an
pf.getLineFormat().getFillFormat().setFillType(FillType.Solid);
pf.getLineFormat().getFillFormat().getSolidFillColor().setColor(Color.BLUE);
pf.getLineFormat().setWidth(20);
pf.setRotation(45);
// Schreibt die PPTX-Datei auf die Festplatte
pres.save("RectPicFrame.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Hinweis
Aspose hat kürzlich einen kostenlosen Collage Maker entwickelt. Wenn Sie jemals JPG/JPEG oder PNG‑Bilder zusammenführen oder Raster aus Fotos erstellen möchten, können Sie diesen Dienst nutzen.Ein Bild als Link hinzufügen
Um die Dateigröße von Präsentationen zu reduzieren, können Sie Bilder (oder Videos) über Links einbinden, anstatt die Dateien direkt in die Präsentation zu integrieren. Dieser Java‑Code zeigt, wie Sie ein Bild und ein Video in einen Platzhalter einfügen:
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();
}
Bilder zuschneiden
Dieser Java‑Code zeigt, wie Sie ein vorhandenes Bild auf einer Folie zuschneiden:
Presentation pres = new Presentation();
// Erstellt ein neues Bildobjekt
try {
IPPImage picture;
IImage image = Images.fromFile(imagePath);
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Fügt einen Bildrahmen zu einer Folie hinzu
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(
ShapeType.Rectangle, 100, 100, 420, 250, picture);
// Schneidet das Bild zu (Prozentwerte)
picFrame.getPictureFormat().setCropLeft(23.6f);
picFrame.getPictureFormat().setCropRight(21.5f);
picFrame.getPictureFormat().setCropTop(3);
picFrame.getPictureFormat().setCropBottom(31);
// Speichert das Ergebnis
pres.save(outPptxFile, SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Zugeschnittene Bereiche eines Bildes löschen
Wenn Sie die zugeschnittenen Bereiche eines Bildes in einem Rahmen entfernen möchten, können Sie die Methode deletePictureCroppedAreas() verwenden. Diese Methode gibt das zugeschnittene Bild zurück oder das Originalbild, falls kein Zuschnitt nötig ist.
Dieser Java‑Code demonstriert die Vorgehensweise:
Presentation presentation = new Presentation("PictureFrameCrop.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Holt das PictureFrame von der ersten Folie
IPictureFrame picFrame = (IPictureFrame)slide.getShapes().get_Item(0);
// Löscht die beschnittenen Bereiche des Bildes im PictureFrame und gibt das beschnittene Bild zurück
IPPImage croppedImage = picFrame.getPictureFormat().deletePictureCroppedAreas();
// Speichert das Ergebnis
presentation.save("PictureFrameDeleteCroppedAreas.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
HINWEIS
Die Methode deletePictureCroppedAreas() fügt das zugeschnittene Bild der Bildersammlung der Präsentation hinzu. Wird das Bild ausschließlich im verarbeiteten PictureFrame verwendet, kann diese Vorgehensweise die Präsentationsgröße reduzieren. Andernfalls erhöht sich die Anzahl der Bilder in der resultierenden Präsentation.
Bei der Zuschneide‑Operation wird die WMF/EMF‑Metadatei in ein Raster‑PNG‑Bild konvertiert.
Seitenverhältnis sperren
Wenn Sie möchten, dass eine Form, die ein Bild enthält, ihr Seitenverhältnis beibehält, selbst wenn Sie die Bildabmessungen ändern, können Sie die Methode setAspectRatioLocked verwenden, um die Einstellung Seitenverhältnis sperren zu setzen.
Dieser Java‑Code zeigt, wie Sie das Seitenverhältnis einer Form sperren:
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);
// Form so einstellen, dass das Seitenverhältnis beim Ändern der Größe erhalten bleibt
pictureFrame.getPictureFrameLock().setAspectRatioLocked(true);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
HINWEIS
Die Einstellung Seitenverhältnis sperren bewahrt nur das Seitenverhältnis der Form, nicht jedoch das des darin enthaltenen Bildes.Verwendung der StretchOff‑Eigenschaft
Mit den Eigenschaften StretchOffsetLeft, StretchOffsetTop, StretchOffsetRight und StretchOffsetBottom des IPictureFillFormat-Interfaces und der PictureFillFormat-Klasse können Sie ein Füllrechteck angeben.
Wenn für ein Bild ein Stretch angegeben wird, wird ein Quellrechteck so skaliert, dass es in das angegebene Füllrechteck passt. Jede Kante des Füllrechtecks wird durch einen prozentualen Versatz von der entsprechenden Kante der Begrenzungsbox der Form definiert. Ein positiver Prozentsatz definiert einen Einzug, ein negativer Prozentsatz einen Auslauf.
- Erstellen Sie eine Instanz der Presentation-Klasse.
- Holen Sie sich die Referenz einer Folie über ihren Index.
- Fügen Sie ein Rechteck
AutoShapehinzu. - Erstellen Sie ein Bild.
- Legen Sie den Fülltyp der Form fest.
- Legen Sie den Bildfüllmodus der Form fest.
- Fügen Sie ein Bild hinzu, um die Form zu füllen.
- Geben Sie Bildversätze von der entsprechenden Kante der Begrenzungsbox der Form an.
- Schreiben Sie die geänderte Präsentation als PPTX‑Datei.
Dieser Java‑Code demonstriert einen Prozess, bei dem die StretchOff‑Eigenschaft verwendet wird:
// Instanziert die Presentation-Klasse, die eine PPTX-Datei darstellt
Presentation pres = new Presentation();
try {
// Holt die erste Folie
ISlide slide = pres.getSlides().get_Item(0);
// Instanziert die ImageEx-Klasse
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Fügt eine AutoShape vom Typ Rectangle hinzu
IAutoShape aShape = slide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 300, 300);
// Setzt den Fülltyp der Form
aShape.getFillFormat().setFillType(FillType.Picture);
// Setzt den Bildfüllmodus der Form
aShape.getFillFormat().getPictureFillFormat().setPictureFillMode(PictureFillMode.Stretch);
// Setzt das Bild, das die Form füllt
aShape.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// Gibt die Bildversätze relativ zur jeweiligen Kante der Begrenzungsbox der Form an
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetLeft(25);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetRight(25);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetTop(-20);
aShape.getFillFormat().getPictureFillFormat().setStretchOffsetBottom(-10);
// Schreibt die PPTX-Datei auf die Festplatte
pres.save("StretchOffsetLeftForPictureFrame_out.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
if (pres != null) pres.dispose();
}
FAQ
Wie kann ich herausfinden, welche Bildformate für PictureFrame unterstützt werden?
Aspose.Slides unterstützt sowohl Rasterbilder (PNG, JPEG, BMP, GIF usw.) als auch Vektorbilder (z. B. SVG) über das Bildobjekt, das einem PictureFrame zugewiesen wird. Die Liste der unterstützten Formate überschneidet sich im Allgemeinen mit den Fähigkeiten der Folien‑ und Bildkonvertierungs‑Engine.
Wie wirkt sich das Hinzufügen von Dutzenden großer Bilder auf die PPTX‑Größe und Performance aus?
Das Einbetten großer Bilder erhöht Dateigröße und Speicherverbrauch; das Verlinken von Bildern hilft, die Präsentationsgröße klein zu halten, erfordert jedoch, dass die externen Dateien weiterhin zugänglich bleiben. Aspose.Slides bietet die Möglichkeit, Bilder per Link hinzuzufügen, um die Dateigröße zu reduzieren.
Wie kann ich ein Bildobjekt vor versehentlichem Verschieben/Größenändern schützen?
Verwenden Sie Form‑Sperren für ein PictureFrame (z. B. Verschieben oder Größenändern deaktivieren). Der Sperrmechanismus wird für Formen in einem separaten Schutz‑Artikel beschrieben und wird für verschiedene Formtypen, einschließlich PictureFrame, unterstützt.
Bleibt die Vektor‑Treue von SVG erhalten, wenn eine Präsentation in PDF/Bilder exportiert wird?
Aspose.Slides ermöglicht das Extrahieren eines SVG aus einem PictureFrame als ursprünglichen Vektor. Beim Export nach PDF oder in Rasterformate kann das Ergebnis je nach Exporteinstellungen gerastert werden; die Tatsache, dass das ursprüngliche SVG als Vektor gespeichert ist, wird durch das Extraktionsverhalten bestätigt.