Optymalizacja zarządzania obrazami w prezentacjach przy użyciu JavaScript
Wprowadzenie
Obrazy sprawiają, że prezentacje są bardziej angażujące i interesujące. W programie Microsoft PowerPoint możesz wstawiać obrazy z pliku, internetu lub innych lokalizacji na slajdy. Podobnie, Aspose.Slides umożliwia dodawanie obrazów do slajdów w twoich prezentacjach przy użyciu różnych metod.
Tip
Aspose udostępnia bezpłatne konwertery—JPEG to PowerPoint i PNG to PowerPoint—które pozwalają szybko tworzyć prezentacje z obrazów.Info
Jeśli chcesz dodać obraz jako obiekt ramki — szczególnie jeśli zamierzasz używać standardowych opcji formatowania, aby zmienić jego rozmiar, dodać efekty i tak dalej — zobacz Picture Frame.Aspose.Slides obsługuje operacje na obrazach w tych popularnych formatach: JPEG, PNG, GIF i inne.
Dodawanie obrazów przechowywanych lokalnie do slajdów
Możesz dodać jeden lub kilka obrazów z komputera na slajd w prezentacji. Ten przykładowy kod w JavaScript pokazuje, jak dodać obraz do slajdu:
var pres = new aspose.slides.Presentation();
try {
var slide = pres.getSlides().get_Item(0);
var picture;
var image = aspose.slides.Images.fromFile("image.png");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100, picture);
pres.save("pres.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Dodawanie obrazów ze strumienia do slajdów
Jeśli obraz, który chcesz dodać do slajdu, nie jest dostępny na twoim komputerze, możesz dodać go bezpośrednio z internetu.
Ten przykładowy kod pokazuje, jak dodać obraz z internetu do slajdu w JavaScript:
var pres = new aspose.slides.Presentation();
try {
// Uzyskuje dostęp do pierwszego slajdu
var sld = pres.getSlides().get_Item(0);
// Ładuje plik Excel do strumienia
var readStream = fs.readFileSync("book1.xlsx");
var byteArray = Array.from(readStream);
// Tworzy obiekt danych do osadzenia
var dataInfo = new aspose.slides.OleEmbeddedDataInfo(java.newArray("byte", byteArray), "xlsx");
// Dodaje kształt ramki obiektu Ole
var oleObjectFrame = sld.getShapes().addOleObjectFrame(0, 0, pres.getSlideSize().getSize().getWidth(), pres.getSlideSize().getSize().getHeight(), dataInfo);
// Zapisuje plik PPTX na dysku
pres.save("OleEmbed_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
Dodawanie obrazów do masterów slajdów
Master slajdu to górny slajd, który przechowuje i kontroluje informacje (motyw, układ itp.) o wszystkich slajdach pod nim. Dlatego, gdy dodasz obraz do mastera slajdu, obraz ten pojawi się na każdym slajdzie pod tym masterem.
Ten przykładowy kod w JavaScript pokazuje, jak dodać obraz do mastera slajdu:
var pres = new aspose.slides.Presentation();
try {
var slide = pres.getSlides().get_Item(0);
var masterSlide = slide.getLayoutSlide().getMasterSlide();
var picture;
var image = aspose.slides.Images.fromFile("image.png");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
masterSlide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 10, 10, 100, 100, picture);
pres.save("pres.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
if (pres != null) {
pres.dispose();
}
}
Dodawanie obrazów jako tło slajdu
Możesz zdecydować się użyć obrazu jako tła dla konkretnego slajdu lub kilku slajdów. W takim przypadku zobacz Ustawianie obrazów jako tła slajdów.
Dodawanie SVG do prezentacji
Możesz dodać lub wstawić dowolny obraz do prezentacji używając metody addPictureFrame należącej do klasy ShapeCollection.
Aby utworzyć obiekt obrazu na podstawie obrazu SVG, możesz zrobić to w ten sposób:
- Utwórz obiekt SvgImage, aby wstawić go do ImageShapeCollection
- Utwórz obiekt PPImage z ISvgImage
- Utwórz obiekt PictureFrame przy użyciu klasy PPImage
Ten przykładowy kod pokazuje, jak wdrożyć powyższe kroki, aby dodać obraz SVG do prezentacji:
// Utwórz instancję klasy Presentation reprezentującej plik PPTX
var pres = new aspose.slides.Presentation();
try {
var svgContent = java.newInstanceSync("java.lang.String", java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "image.svg")));
var svgImage = new aspose.slides.SvgImage(svgContent);
var ppImage = pres.getImages().addImage(svgImage);
pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 0, 0, ppImage.getWidth(), ppImage.getHeight(), ppImage);
pres.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
Konwertowanie SVG do zestawu kształtów
Konwersja SVG do zestawu kształtów w Aspose.Slides jest podobna do funkcji PowerPoint służącej do pracy z obrazami SVG:

Funkcjonalność jest zapewniona przez jedną z przeciążeń metody addGroupShape klasy ShapeCollection, która przyjmuje obiekt SvgImage jako pierwszy argument.
Ten przykładowy kod pokazuje, jak użyć opisanej metody do konwersji pliku SVG na zestaw kształtów:
// Utwórz nową prezentację
var presentation = new aspose.slides.Presentation();
try {
// Odczytaj zawartość pliku SVG
var svgContent = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "image.svg"));
// Utwórz obiekt SvgImage
var svgImage = new aspose.slides.SvgImage(svgContent);
// Pobierz rozmiar slajdu
var slideSize = presentation.getSlideSize().getSize();
// Konwertuj obraz SVG na grupę kształtów, skalując go do rozmiaru slajdu
presentation.getSlides().get_Item(0).getShapes().addGroupShape(svgImage, 0.0, 0.0, slideSize.getWidth(), slideSize.getHeight());
// Zapisz prezentację w formacie PPTX
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (presentation != null) {
presentation.dispose();
}
}
Dodawanie obrazów jako EMF w slajdach
Aspose.Slides dla Node.js via Java pozwala generować obrazy EMF z arkuszy Excel i dodawać je jako EMF w slajdach przy użyciu Aspose.Cells.
Ten przykładowy kod pokazuje, jak wykonać opisane zadanie:
var book = java.newInstanceSync("aspose.cells.Workbook", "chart.xlsx");
var sheet = book.getWorksheets().get(0);
var options = java.newInstanceSync("aspose.cells.ImageOrPrintOptions");
options.setHorizontalResolution(200);
options.setVerticalResolution(200);
options.setImageType(java.getStaticFieldValue("ImageType", "EMF"));
// Save the workbook to stream
var sr = java.newInstanceSync("SheetRender", sheet, options);
var pres = new aspose.slides.Presentation();
try {
pres.getSlides().removeAt(0);
var EmfSheetName = "";
for (var j = 0; j < sr.getPageCount(); j++) {
EmfSheetName = ((("test" + sheet.getName()) + " Page") + (j + 1)) + ".out.emf";
sr.toImage(j, EmfSheetName);
var picture;
var image = aspose.slides.Images.fromFile(EmfSheetName);
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) {
image.dispose();
}
}
var slide = pres.getSlides().addEmptySlide(pres.getLayoutSlides().getByType(aspose.slides.SlideLayoutType.Blank));
var m = slide.getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 0, 0, pres.getSlideSize().getSize().getWidth(), pres.getSlideSize().getSize().getHeight(), picture);
}
pres.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
if (pres != null) {
pres.dispose();
}
}
Zastępowanie obrazów w kolekcji obrazów
Aspose.Slides pozwala zastępować obrazy przechowywane w kolekcji obrazów prezentacji (w tym te używane przez kształty slajdów). Ta sekcja pokazuje kilka podejść do aktualizacji obrazów w kolekcji. API oferuje proste metody zastąpienia obrazu przy użyciu surowych danych bajtowych, instancji IImage, lub innego obrazu już istniejącego w kolekcji.
Postępuj zgodnie z poniższymi krokami:
- Załaduj plik prezentacji zawierający obrazy przy użyciu klasy Presentation.
- Załaduj nowy obraz z pliku do tablicy bajtów.
- Zastąp docelowy obraz nowym obrazem, używając tablicy bajtów.
- W drugim podejściu załaduj obraz do obiektu IImage i zastąp docelowy obraz tym obiektem.
- W trzecim podejściu zastąp docelowy obraz obrazem, który już istnieje w kolekcji obrazów prezentacji.
- Zapisz zmodyfikowaną prezentację jako plik PPTX.
// Utwórz instancję klasy Presentation reprezentującej plik prezentacji.
const presentation = new aspose.slides.Presentation("sample.pptx");
try {
// Pierwszy sposób.
const imageData = java.newArray("byte", Array.from(fs.readFileSync("image0.jpeg")));
let oldImage = presentation.getImages().get_Item(0);
oldImage.replaceImage(imageData);
// Drugi sposób.
const newImage = aspose.slides.Images.fromFile("image1.png");
oldImage = presentation.getImages().get_Item(1);
oldImage.replaceImage(newImage);
newImage.dispose();
// Trzeci sposób.
oldImage = presentation.getImages().get_Item(2);
oldImage.replaceImage(presentation.getImages().get_Item(3));
// Zapisz prezentację do pliku.
presentation.save("output.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Info
Korzystając z bezpłatnego konwertera Aspose Text to GIF możesz łatwo animować teksty, tworzyć GIF-y z tekstów itp.FAQ
Czy oryginalna rozdzielczość obrazu pozostaje niezmieniona po wstawieniu?
Tak. Piksele źródłowe są zachowane, ale ostateczny wygląd zależy od tego, jak picture jest skalowany na slajdzie oraz od ewentualnej kompresji przy zapisie.
Jaki jest najlepszy sposób na zastąpienie tego samego logo na dziesiątkach slajdów jednocześnie?
Umieść logo na masterze slajdu lub układzie i zastąp je w kolekcji obrazów prezentacji — zmiany zostaną rozpropagowane do wszystkich elementów korzystających z tego zasobu.
Czy wstawiony SVG może zostać przekonwertowany na edytowalne kształty?
Tak. Możesz przekonwertować SVG na grupę kształtów, po czym poszczególne części stają się edytowalne przy użyciu standardowych właściwości kształtów.
Jak ustawić obraz jako tło dla wielu slajdów jednocześnie?
Ustaw obraz jako tło na masterze slajdu lub odpowiednim układzie — wszystkie slajdy korzystające z tego mastera/układu odziedziczą tło.
Jak zapobiec „rozwijaniu się” prezentacji z powodu dużej liczby obrazów?
Używaj jednego zasobu obrazu zamiast duplikatów, wybieraj rozsądne rozdzielczości, stosuj kompresję przy zapisie i przechowuj powtarzalne grafiki w masterze, gdy to właściwe.