Konvertera PowerPoint-bilder till PNG i PHP

Översikt

Den här artikeln förklarar hur du konverterar presentationsbilder till PNG‑bilder med Aspose.Slides för PHP via Java. Du kan läsa in presentationer i format som PPT, PPTX och ODP, rendera varje bild och spara den som en separat PNG‑fil.

Exemplen nedan visar rendering med standardskala, ökad skala, specificering av utdimensioner i pixlar och val av en gradientrenderingsstil.

Konvertera PowerPoint till PNG

Läs in en presentation med klassen Presentation och kom åt dess bilder via samlingen Presentation::getSlides. Exemplet renderar varje bild med Slide::getImage utan parametrar för att skapa en miniatyrbild. Därefter anropas IImage::save med ImageFormat::Png för att spara varje renderad bild som en PNG‑fil.

use aspose\slides\ImageFormat;
use aspose\slides\Presentation;

$presentation = new Presentation("presentation.pptx");
try {
    $slideCount = java_values($presentation->getSlides()->size());
    for ($index = 0; $index < $slideCount; $index++) {
        $slide = $presentation->getSlides()->get_Item($index);
        $image = $slide->getImage();
        try {
            $image->save("slide_" . $index . ".png", ImageFormat::Png);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

Konvertera PowerPoint till PNG med anpassade dimensioner

Passera horisontella och vertikala skalningsfaktorer till Slide::getImage för att kontrollera de renderade dimensionerna. I det här exemplet är båda faktorerna 2, så en bild som mäter 720 — 540 punkter ger en bild på 1440 — 1080 pixlar. Lika skalningsfaktorer bevarar bildens bildförhållande. Varje bild sparas i PNG‑format med IImage::save.

use aspose\slides\ImageFormat;
use aspose\slides\Presentation;

$presentation = new Presentation("presentation.pptx");
try {
    $scaleX = 2.0;
    $scaleY = $scaleX;

    $slideCount = java_values($presentation->getSlides()->size());
    for ($index = 0; $index < $slideCount; $index++) {
        $slide = $presentation->getSlides()->get_Item($index);
        $image = $slide->getImage($scaleX, $scaleY);
        try {
            $image->save("slide_" . $index . ".png", ImageFormat::Png);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

Konvertera PowerPoint till PNG med anpassad storlek

För att specificera utdimensionerna i pixlar, skicka en storlek till Slide::getImage istället för skalningsfaktorer. Detta exempel renderar varje bild med 960 — 720 pixlar och sparar resultatet med IImage::save. Välj dimensioner som matchar bildens bildförhållande för att undvika att bilden sträcks.

use aspose\slides\ImageFormat;
use aspose\slides\Presentation;

$presentation = new Presentation("presentation.pptx");
try {
    $imageSize = new Java("java.awt.Dimension", 960, 720);

    $slideCount = java_values($presentation->getSlides()->size());
    for ($index = 0; $index < $slideCount; $index++) {
        $slide = $presentation->getSlides()->get_Item($index);
        $image = $slide->getImage($imageSize);
        try {
            $image->save("slide_" . $index . ".png", ImageFormat::Png);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

Välj en gradientrenderingsstil

Anta att en bild innehåller gradientfyllningar, men övergångarna i den exporterade PNG‑filen ser ljusare eller på annat sätt annorlunda ut än i PowerPoint. Du kan använda metoden SaveOptions::setGradientStyle som ärvs av RenderingOptions för att välja hur gradienterna renderas.

Ladda ner gradient-styles.pptx och placera den i applikationens arbetskatalog. Dess första bild innehåller två linjära gradienter: cyan till orange högst upp och blå till gul längst ner. Varje gradient har två stopp, vid 0 % och 100 %.

Följande exempel läser in denna presentation och renderar den samma första bilden i båda lägena med Slide::getImage.

use aspose\slides\GradientStyle;
use aspose\slides\ImageFormat;
use aspose\slides\Presentation;
use aspose\slides\RenderingOptions;

$presentation = new Presentation("gradient-styles.pptx");
try {
    $slide = $presentation->getSlides()->get_Item(0);

    $gradientStyles = [GradientStyle::Default, GradientStyle::PowerPointUI];
    foreach ($gradientStyles as $style) {
        $options = new RenderingOptions();
        $options->setGradientStyle($style);

        $styleName = $style == GradientStyle::Default ? "Default" : "PowerPointUI";
        $image = $slide->getImage($options, 1.0, 1.0);
        try {
            $image->save("gradient-" . $styleName . ".png", ImageFormat::Png);
        } finally {
            $image->dispose();
        }
    }
} finally {
    $presentation->dispose();
}

Bilderna nedan visar resultatet från samma bild, med båda gradienterna i varje bild:

Default PowerPointUI
Cyan-to-orange and blue-to-yellow gradients rendered with Default The same gradients rendered with PowerPointUI

I det här exemplet ger Default ljusare mellanliggande färger, medan PowerPointUI ger mörkare mellanliggande färger. Skillnaden beror på färgerna och stoppen i gradienten.

Välj Default när den standardmässiga Aspose.Slides‑utgången passar dina behov. Prova PowerPointUI när ditt mål är att matcha utseendet i PowerPoint. Jämför båda resultaten med ditt önskade resultat; inget läge är generellt att föredra.

Vanliga frågor

Hur kan jag exportera en specifik form, till exempel ett diagram eller en bild, istället för hela bilden?

Aspose.Slides stöder generering av miniatyrer för enskilda former, vilket gör att du kan rendera en form som en PNG‑bild.

Stöds parallell konvertering på en server?

Ja. Använd en separat presentationsinstans för varje tråd eller process; dela inte en enda instans över trådar.

Vilka begränsningar finns i utvärderingsläget när du exporterar till PNG?

Utvärderingsläget lägger till ett vattenmärke på de exporterade bilderna och tillämpar övriga restriktioner tills en licens har tillämpats.