Konwertowanie slajdów prezentacji na obrazy w PHP
Wprowadzenie
Aspose.Slides for PHP via Java umożliwia łatwe konwertowanie slajdów prezentacji PowerPoint i OpenDocument na różne formaty obrazu, w tym BMP, PNG, JPG (JPEG), GIF i inne.
Aby przekonwertować slajd na obraz, wykonaj następujące kroki:
- Zdefiniuj żądane ustawienia konwersji i wybierz slajdy, które chcesz wyeksportować, używając:
- klasy TiffOptions lub
- klasy RenderingOptions.
- Wygeneruj obraz slajdu, wywołując metodę getImage.
W Aspose.Slides for PHP via Java interfejs IImage jest klasą, która umożliwia pracę z obrazami zdefiniowanymi danymi pikseli. Możesz użyć tej klasy do zapisywania obrazów w szerokim zakresie formatów (BMP, JPG, PNG itp.).
Konwertowanie slajdów na bitmapy i zapisywanie obrazów w formacie PNG
Możesz przekonwertować slajd na obiekt bitmapy i używać go bezpośrednio w aplikacji. Alternatywnie możesz przekonwertować slajd na bitmapę, a następnie zapisać obraz w formacie JPEG lub innym wybranym formacie.
Poniższy kod demonstruje, jak przekonwertować pierwszy slajd prezentacji na obiekt bitmapy, a następnie zapisać obraz w formacie PNG:
$presentation = new Presentation("Presentation.pptx");
try {
// Konwertuj pierwszy slajd w prezentacji na bitmapę.
$image = $presentation->getSlides()->get_Item(0)->getImage();
try {
// Zapisz obraz w formacie PNG.
$image->save("Slide_0.png", ImageFormat::Png);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Konwertowanie slajdów na obrazy o niestandardowych rozmiarach
Możesz potrzebować obrazu o określonym rozmiarze. Korzystając z przeciążenia metody getImage, możesz przekonwertować slajd na obraz o konkretnych wymiarach (szerokość i wysokość).
Poniższy przykład kodu pokazuje, jak to zrobić:
$imageSize = new Java("java.awt.Dimension", 1820, 1040);
$presentation = new Presentation("Presentation.pptx");
try {
// Konwertuj pierwszy slajd w prezentacji na bitmapę o określonym rozmiarze.
$image = $presentation->getSlides()->get_Item(0)->getImage($imageSize);
try {
// Zapisz obraz w formacie JPEG.
$image->save("Slide_0.jpg", ImageFormat::Jpeg);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Konwertowanie slajdów z notatkami i komentarzami na obrazy
Niektóre slajdy mogą zawierać notatki i komentarze.
Aspose.Slides udostępnia dwie klasyTiffOptions i RenderingOptions—które pozwalają kontrolować renderowanie slajdów prezentacji na obrazy. Obie klasy zawierają metodę setSlidesLayoutOptions, która umożliwia skonfigurowanie renderowania notatek i komentarzy na slajdzie podczas konwersji do obrazu.
Za pomocą klasy NotesCommentsLayoutingOptions możesz określić preferowaną pozycję notatek i komentarzy w uzyskanym obrazie.
Poniższy kod demonstruje, jak przekonwertować slajd z notatkami i komentarzami:
$scaleX = 2;
$scaleY = $scaleX;
$presentation = new Presentation("Presentation_with_notes_and_comments.pptx");
try {
$notesCommentsOptions = new NotesCommentsLayoutingOptions();
$notesCommentsOptions->setNotesPosition(NotesPositions::BottomTruncated); // Ustaw pozycję notatek.
$notesCommentsOptions->setCommentsPosition(CommentsPositions::Right); // Ustaw pozycję komentarzy.
$notesCommentsOptions->setCommentsAreaWidth(500); // Ustaw szerokość obszaru komentarzy.
$notesCommentsOptions->setCommentsAreaColor(java("java.awt.Color")->LIGHT_GRAY); // Ustaw kolor obszaru komentarzy.
// Utwórz opcje renderowania.
$options = new RenderingOptions();
$options->setSlidesLayoutOptions($notesCommentsOptions);
// Konwertuj pierwszy slajd prezentacji na obraz.
$image = $presentation->getSlides()->get_Item(0)->getImage($options, $scaleX, $scaleY);
try {
// Zapisz obraz w formacie GIF.
$image->save("Image_with_notes_and_comments_0.gif", ImageFormat::Gif);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Note
W każdym procesie konwersji slajdu na obraz metoda setNotesPosition nie może zastosować wartościBottomFull (aby określić pozycję notatek), ponieważ tekst notatki może być zbyt duży, co uniemożliwia zmieszczenie go w określonym rozmiarze obrazu.
Konwertowanie slajdów na obrazy przy użyciu opcji TIFF
Klasa TiffOptions zapewnia większą kontrolę nad wynikowym obrazem TIFF, umożliwiając określenie parametrów takich jak rozmiar, rozdzielczość, paleta kolorów i inne.
Poniższy kod demonstruje proces konwersji, w którym opcje TIFF są używane do wygenerowania czarno-białego obrazu z rozdzielczością 300 DPI i rozmiarem 2160 × 2800:
// Wczytaj plik prezentacji.
$presentation = new Presentation("sample.pptx");
try {
// Pobierz pierwszy slajd z prezentacji.
$slide = $presentation->getSlides()->get_Item(0);
// Skonfiguruj ustawienia wyjściowego obrazu TIFF.
$options = new TiffOptions();
$options->setImageSize(new Java("java.awt.Dimension", 2160, 2880)); // Ustaw rozmiar obrazu.
$options->setPixelFormat(ImagePixelFormat::Format1bppIndexed); // Ustaw format pikseli (czarno-biały).
$options->setDpiX(300); // Ustaw rozdzielczość poziomą.
$options->setDpiY(300); // Ustaw rozdzielczość pionową.
// Konwertuj slajd na obraz z podanymi opcjami.
$image = $slide->getImage($options);
try {
// Zapisz obraz w formacie TIFF.
$image->save("output.tiff", ImageFormat::Tiff);
} finally {
$image->dispose();
}
} finally {
$presentation->dispose();
}
Note
Obsługa formatu TIFF nie jest gwarantowana w wersjach starszych niż JDK 9.Konwertowanie wszystkich slajdów na obrazy
Aspose.Slides umożliwia konwersję wszystkich slajdów w prezentacji na obrazy, efektywnie zamieniając całą prezentację w serię obrazów.
Poniższy przykład kodu pokazuje, jak w PHP przekonwertować wszystkie slajdy w prezentacji na obrazy:
$scaleX = 2;
$scaleY = $scaleX;
$presentation = new Presentation("Presentation.pptx");
try {
// Renderuj prezentację do obrazów slajd po slajdzie.
for($i = 0; $i < java_values($presentation->getSlides()->size()) ; $i++) {
// Kontroluj ukryte slajdy (nie renderuj ukrytych slajdów).
if (java_values($presentation->getSlides()->get_Item($i)->getHidden())) {
continue;
}
// Konwertuj slajd na obraz.
$image = $presentation->getSlides()->get_Item($i)->getImage($scaleX, $scaleY);
try {
// Zapisz obraz w formacie JPEG.
$image->save("Slide_" . $i . ".jpg", ImageFormat::Jpeg);
} finally {
$image->dispose();
}
}
} finally {
$presentation->dispose();
}
FAQ
Czy Aspose.Slides obsługuje renderowanie slajdów z animacjami?
Nie, metoda getImage zapisuje jedynie statyczny obraz slajdu, bez animacji.
Czy ukryte slajdy można eksportować jako obrazy?
Tak, ukryte slajdy mogą być przetwarzane tak samo jak zwykłe. Należy tylko upewnić się, że są uwzględnione w pętli przetwarzania.
Czy obrazy można zapisać z cieniami i efektami?
Tak, Aspose.Slides obsługuje renderowanie cieni, przezroczystości i innych efektów graficznych podczas zapisywania slajdów jako obrazy.