Bilderrahmen
Ein Bilderrahmen ist eine Form, die ein Bild enthält – es ist wie ein Bild in einem Rahmen.
Sie können ein Bild über einen Bilderrahmen zu einer Folie hinzufügen. Auf diese Weise können Sie das Bild formatieren, indem Sie den Bilderrahmen formatieren.
Tipp
Aspose bietet kostenlose Konverter—JPEG zu PowerPoint und PNG zu PowerPoint—die es den Menschen ermöglichen, schnell Präsentationen aus Bildern zu erstellen.Bilderrahmen erstellen
- Erstellen Sie eine Instanz der Presentation Klasse.
- Holen Sie sich eine Referenz auf eine Folie über ihren Index.
- Erstellen Sie ein IPPImage Objekt, indem Sie ein Bild in die IImagescollection hinzufügen, die mit dem Präsentationsobjekt verknüpft ist, das verwendet wird, um die Form zu füllen.
- Geben Sie die Breite und Höhe des Bildes an.
- Erstellen Sie einen PictureFrame basierend auf der Breite und Höhe des Bildes über die
AddPictureFrame
Methode, die vom Formobjekt bereitgestellt wird, das mit der referenzierten Folie verknüpft ist. - Fügen Sie einen Bilderrahmen (der das Bild enthält) zur Folie hinzu.
- Schreiben Sie die modifizierte Präsentation als PPTX-Datei.
Dieser Java-Code zeigt Ihnen, wie Sie einen Bilderrahmen erstellen:
// Instanziiert die Presentation-Klasse, die eine PPTX-Datei repräsentiert
Presentation pres = new Presentation();
try {
// Holt sich die erste Folie
ISlide sld = pres.getSlides().get_Item(0);
// Instanziiert die Image-Klasse
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Fügt einen Bilderrahmen 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();
}
Bilderrahmen mit relativem Maßstab erstellen
Durch Ändern des relativen Maßstabs eines Bildes können Sie einen komplizierteren Bilderrahmen erstellen.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Holen Sie sich eine Referenz auf eine Folie über ihren Index.
- Fügen Sie ein Bild zur Präsentationsbildsammlung hinzu.
- Erstellen Sie ein IPPImage Objekt, indem Sie ein Bild in die IImagescollection hinzufügen, die mit dem Präsentationsobjekt verknüpft ist, das verwendet wird, um die Form zu füllen.
- Geben Sie die relative Breite und Höhe des Bildes im Bilderrahmen an.
- Schreiben Sie die modifizierte Präsentation als PPTX-Datei.
Dieser Java-Code zeigt Ihnen, wie Sie einen Bilderrahmen mit relativem Maßstab erstellen:
// Instanziert die Presentation-Klasse, die die PPTX repräsentiert
Presentation pres = new Presentation();
try {
// Holt sich die erste Folie
ISlide sld = pres.getSlides().get_Item(0);
// Instanziiert die Image-Klasse
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Fügt einen Bilderrahmen mit der Höhe und Breite des Bildes hinzu
IPictureFrame pf = sld.getShapes().addPictureFrame(ShapeType.Rectangle, 50, 150, imgx.getWidth(), imgx.getHeight(), imgx);
// Setzt den relativen Maßstab 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();
}
Bild aus dem Bilderrahmen extrahieren
Sie können Bilder aus PictureFrame Objekten extrahieren und sie in PNG, JPG und anderen Formaten speichern. Das folgende Codebeispiel zeigt, wie man ein Bild aus dem Dokument “sample.pptx” extrahiert und im PNG-Format speichert.
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();
}
Transparenz des Bildes erhalten
Aspose.Slides ermöglicht es Ihnen, die Transparenz eines Bildes zu erhalten. Dieser Java-Code demonstriert den Vorgang:
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("Bildtransparenz: " + transparencyValue);
}
}
Bilderrahmenformatierung
Aspose.Slides bietet viele Formatierungsoptionen, die auf einen Bilderrahmen angewendet werden können. Mit diesen Optionen können Sie einen Bilderrahmen anpassen, um bestimmten Anforderungen gerecht zu werden.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Holen Sie sich eine Referenz auf eine Folie über ihren Index.
- Erstellen Sie ein IPPImage Objekt, indem Sie ein Bild in die IImagescollection hinzufügen, die mit dem Präsentationsobjekt verknüpft ist, das verwendet wird, um die Form zu füllen.
- Geben Sie die Breite und Höhe des Bildes an.
- Erstellen Sie einen
PictureFrame
basierend auf der Breite und Höhe des Bildes über die AddPictureFrame Methode, die vom IShapes Objekt bereitgestellt wird, das mit der referenzierten Folie verknüpft ist. - Fügen Sie den Bilderrahmen (der das Bild enthält) zur Folie hinzu.
- Setzen Sie die Linienfarbe des Bilderrahmens.
- Setzen Sie die Linienstärke des Bilderrahmens.
- Drehen Sie den Bilderrahmen, indem Sie ihm entweder einen positiven oder negativen Wert geben.
- Ein positiver Wert dreht das Bild im Uhrzeigersinn.
- Ein negativer Wert dreht das Bild gegen den Uhrzeigersinn.
- Fügen Sie den Bilderrahmen (der das Bild enthält) zur Folie hinzu.
- Schreiben Sie die modifizierte Präsentation als PPTX-Datei.
Dieser Java-Code demonstriert den Formatierungsprozess des Bilderrahmens:
// Instanziert die Presentation-Klasse, die die PPTX repräsentiert
Presentation pres = new Presentation();
try {
// Holt sich die erste Folie
ISlide sld = pres.getSlides().get_Item(0);
// Instanziiert die Image-Klasse
IPPImage imgx = pres.getImages().addImage(new FileInputStream(new File("asp1.jpg")));
// Fügt einen Bilderrahmen mit der Höhe und Breite des Bildes 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();
}
Tipp
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 Service nutzen.Bild als Link hinzufügen
Um große Präsentationsgrößen zu vermeiden, können Sie Bilder (oder Videos) über Links hinzufügen, anstatt die Dateien direkt in die Präsentationen einzubetten. Dieser Java-Code zeigt Ihnen, wie Sie ein Bild und ein Video in einen Platzhalter hinzufü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();
}
Bild zuschneiden
Dieser Java-Code zeigt Ihnen, 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 PictureFrame zu einer Folie hinzu
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(
ShapeType.Rectangle, 100, 100, 420, 250, picture);
// Schneidet das Bild (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();
}
Bereiche des Bildes, die ausgeschnitten wurden, löschen
Wenn Sie die ausgeschnittenen Bereiche eines Bildes, das sich in einem Rahmen befindet, löschen möchten, können Sie die Methode deletePictureCroppedAreas() verwenden. Diese Methode gibt das ausgeschnittene Bild oder das Originalbild zurück, wenn das Zuschneiden nicht erforderlich ist.
Dieser Java-Code demonstriert den Vorgang:
Presentation presentation = new Presentation("PictureFrameCrop.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Holt sich den PictureFrame von der ersten Folie
IPictureFrame picFrame = (IPictureFrame)slide.getShapes().get_Item(0);
// Löscht die ausgeschnittenen Bereiche des PictureFrame-Bildes und gibt das ausgeschnittene 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 ausgeschnittene Bild zur Bildsammlung der Präsentation hinzu. Wenn das Bild nur im verarbeiteten PictureFrame verwendet wird, kann diese Einrichtung die Größe der Präsentation reduzieren. Andernfalls wird die Anzahl der Bilder in der resultierenden Präsentation zunehmen.
Diese Methode konvertiert WMF/EMF-Metadateien in Raster-PNG-Bilder im Zuschneidevorgang.
Seitenverhältnis sperren
Wenn Sie möchten, dass eine Form, die ein Bild enthält, ihr Seitenverhältnis beibehält, auch nachdem Sie die Abmessungen des Bildes ändern, können Sie die Methode setAspectRatioLocked verwenden, um die Einstellung Seitenverhältnis sperren festzulegen.
Dieser Java-Code zeigt Ihnen, 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);
// Setzt die Form so, dass sie das Seitenverhältnis beim Ändern der Größe beibehält
pictureFrame.getPictureFrameLock().setAspectRatioLocked(true);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
HINWEIS
Dieses Seitenverhältnis sperren legt nur das Seitenverhältnis der Form und nicht des Bildes, das sie enthält, fest.StretchOff-Eigenschaft verwenden
Durch die Verwendung der Eigenschaften StretchOffsetLeft, StretchOffsetTop, StretchOffsetRight und StretchOffsetBottom aus der IPictureFillFormat Schnittstelle und der PictureFillFormat Klasse können Sie ein Füllrechteck angeben.
Wenn das Strecken für ein Bild angegeben ist, wird ein Quellrechteck skaliert, um in das angegebene Füllrechteck zu passen. Jede Kante des Füllrechtecks ist durch einen prozentualen Offset von der entsprechenden Kante des Begrenzungsrahmens der Form definiert. Ein positiver Prozentsatz gibt eine Einlage an, während ein negativer Prozentsatz einen Auszug angibt.
- Erstellen Sie eine Instanz der Presentation Klasse.
- Holen Sie sich eine Referenz auf eine Folie über ihren Index.
- Fügen Sie eine Rechteck
AutoShape
hinzu. - Erstellen Sie ein Bild.
- Setzen Sie den Fülltyp der Form.
- Setzen Sie den Bildfüllmodus der Form.
- Fügen Sie das Bild hinzu, um die Form zu füllen.
- Geben Sie die Bild-Offets von der entsprechenden Kante des Begrenzungsrahmens der Form an.
- Schreiben Sie die modifizierte Präsentation als PPTX-Datei.
Dieser Java-Code demonstriert einen Prozess, in dem eine StretchOff-Eigenschaft verwendet wird:
// Instanziert die Presentation-Klasse, die eine PPTX-Datei repräsentiert
Presentation pres = new Presentation();
try {
// Holt sich die erste Folie
ISlide slide = pres.getSlides().get_Item(0);
// Instanziiert 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 ein AutoShape hinzu, das auf Rechteck gesetzt ist
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, um die Form zu füllen
aShape.getFillFormat().getPictureFillFormat().getPicture().setImage(picture);
// Gibt die Bild-Offets von der entsprechenden Kante des Begrenzungsrahmens 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();
}