Konwertuj slajdy PowerPoint na PNG w C++
Przegląd
Ten artykuł wyjaśnia, jak konwertować slajdy prezentacji na obrazy PNG przy użyciu Aspose.Slides dla C++. Można ładować prezentacje w formatach takich jak PPT, PPTX i ODP, renderować każdy slajd i zapisywać go jako osobny obraz PNG.
Poniższe przykłady pokazują renderowanie w domyślnej skali, zwiększanie skali, określanie wymiarów wyjściowych w pikselach oraz wybór stylu renderowania gradientu.
Konwertuj PowerPoint do PNG
Załaduj prezentację przy pomocy klasy Presentation i uzyskaj dostęp do jej slajdów za pomocą akcesora Presentation::get_Slide. Przykład renderuje każdy slajd metodą ISlide::GetImage bez parametrów, aby utworzyć miniaturę. Następnie wywołuje IImage::Save z ImageFormat::Png, aby zapisać każdy wyrenderowany slajd jako obraz PNG.
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <IImage.h>
#include <ImageFormat.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace System;
auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto slideCount = presentation->get_Slides()->get_Count();
for (auto index = 0; index < slideCount; index++)
{
auto slide = presentation->get_Slide(index);
auto image = slide->GetImage();
image->Save(String::Format(u"slide_{0}.png", index), ImageFormat::Png);
image->Dispose();
}
presentation->Dispose();
Note
Przeciążenie ISlide::GetImage bez parametrów renderuje w skali 0,2. Na przykład slajd o wymiarach 720 × 540 punktów generuje miniaturę 144 × 108 pikseli. Aby kontrolować wymiary wyjściowe, użyj przeciążeń ze współczynnikami skali lub explicytnego rozmiaru obrazu, jak pokazano poniżej.Konwertuj PowerPoint do PNG z niestandardowymi wymiarami
Przekaż poziome i pionowe współczynniki skali do ISlide::GetImage, aby kontrolować wymiar renderowanego obrazu. W tym przykładzie oba współczynniki wynoszą 2, więc slajd o wymiarach 720 × 540 punktów generuje obraz 1440 × 1080 pikseli. Równe współczynniki zachowują proporcje slajdu. Każdy obraz jest zapisywany w formacie PNG przy użyciu IImage::Save.
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <IImage.h>
#include <ImageFormat.h>
#include <system/string.h>
using namespace Aspose::Slides;
using namespace System;
auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto scaleX = 2.f;
auto scaleY = scaleX;
auto slideCount = presentation->get_Slides()->get_Count();
for (auto index = 0; index < slideCount; index++)
{
auto slide = presentation->get_Slide(index);
auto image = slide->GetImage(scaleX, scaleY);
image->Save(String::Format(u"slide_{0}.png", index), ImageFormat::Png);
image->Dispose();
}
presentation->Dispose();
Konwertuj PowerPoint do PNG z niestandardowym rozmiarem
Aby określić wymiary wyjściowe w pikselach, przekaż rozmiar do ISlide::GetImage zamiast współczynników skali. Ten przykład renderuje każdy slajd w rozdzielczości 960 × 720 pikseli i zapisuje wynik przy użyciu IImage::Save. Wybierz wymiary odpowiadające proporcjom slajdu, aby uniknąć rozciągnięcia obrazu.
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <IImage.h>
#include <ImageFormat.h>
#include <system/string.h>
#include <drawing/size.h>
using namespace Aspose::Slides;
using namespace System;
auto presentation = MakeObject<Presentation>(u"presentation.pptx");
auto imageSize = System::Drawing::Size(960, 720);
auto slideCount = presentation->get_Slides()->get_Count();
for (auto index = 0; index < slideCount; index++)
{
auto slide = presentation->get_Slide(index);
auto image = slide->GetImage(imageSize);
image->Save(String::Format(u"slide_{0}.png", index), ImageFormat::Png);
image->Dispose();
}
presentation->Dispose();
Wybierz styl renderowania gradientu
Załóżmy, że slajd zawiera wypełnienia gradientowe, ale przejścia w wyeksportowanym PNG są jaśniejsze lub inaczej wyglądają niż w PowerPoint. Można użyć metody SaveOptions::set_GradientStyle klasy RenderingOptions, aby wybrać sposób renderowania gradientów.
Pobierz plik gradient-styles.pptx i umieść go w katalogu roboczym aplikacji. Jej pierwszy slajd zawiera dwa gradienty liniowe: od cyjanu do pomarańczy na górze oraz od niebieskiego do żółci na dole. Każdy gradient ma dwa punkty przystankowe: 0% i 100%.
Poniższy przykład ładuje tę prezentację i renderuje ten sam pierwszy slajd w obu trybach przy użyciu ISlide::GetImage.
#include <DOM/ISlide.h>
#include <DOM/ISlideCollection.h>
#include <DOM/Presentation.h>
#include <IImage.h>
#include <ImageFormat.h>
#include <system/string.h>
#include <DOM/GradientStyle.h>
#include <Export/RenderingOptions.h>
using namespace Aspose::Slides;
using namespace Aspose::Slides::Export;
using namespace System;
auto presentation = MakeObject<Presentation>(u"gradient-styles.pptx");
auto slide = presentation->get_Slide(0);
auto gradientStyles = { GradientStyle::Default, GradientStyle::PowerPointUI };
for (auto style : gradientStyles)
{
auto options = MakeObject<RenderingOptions>();
options->set_GradientStyle(style);
auto image = slide->GetImage(options, 1.f, 1.f);
auto styleName = style == GradientStyle::Default ? u"Default" : u"PowerPointUI";
image->Save(String::Format(u"gradient-{0}.png", styleName), ImageFormat::Png);
image->Dispose();
}
presentation->Dispose();
Poniższe obrazy przedstawiają wynik z tego samego slajdu, z obu gradientami w każdym obrazie:
| Default | PowerPointUI |
|---|---|
![]() |
![]() |
W tym przykładzie Default generuje jaśniejsze kolory pośrednie, natomiast PowerPointUI generuje ciemniejsze kolory pośrednie. Różnica zależy od kolorów i punktów przystankowych w gradiencie.
Wybierz Default, gdy standardowy wynik Aspose.Slides spełnia Twoje potrzeby. Wypróbuj PowerPointUI, gdy priorytetem jest dopasowanie wyglądu do PowerPoint. Porównaj oba wyniki z zamierzonym rezultatem; żaden tryb nie jest uniwersalnie lepszy.
FAQ
Jak mogę wyeksportować konkretny kształt, na przykład wykres lub obraz, zamiast całego slajdu?
Aspose.Slides obsługuje generowanie miniatur dla pojedynczych kształtów, umożliwiając renderowanie kształtu jako obrazu PNG.
Czy konwersja równoległa jest obsługiwana na serwerze?
Tak. Używaj osobnej instancji prezentacji dla każdego wątku lub procesu; nie udostępniaj jednej instancji wielokrotnie wątkom.
Jakie są ograniczenia wersji ewaluacyjnej przy eksportowaniu do PNG?
Tryb ewaluacji dodaje znak wodny do wyjściowych obrazów i stosuje inne ograniczenia, dopóki nie zostanie zastosowana licencja.

