แปลงสไลด์ PowerPoint เป็น PNG ใน PHP
ภาพรวม
บทความนี้อธิบายวิธีแปลงสไลด์นำเสนอเป็นภาพ PNG โดยใช้ Aspose.Slides สำหรับ PHP ผ่าน Java คุณสามารถโหลดไฟล์นำเสนอในรูปแบบเช่น PPT, PPTX และ ODP, แสดงผลแต่ละสไลด์และบันทึกเป็นภาพ PNG แยกใบได้
ตัวอย่างด้านล่างแสดงการเรนเดอร์ที่อัตราส่วนเริ่มต้น การเพิ่มอัตราส่วน การระบุขนาดผลลัพธ์เป็นพิกเซล และการเลือกสไตล์การเรนเดอร์แบบไล่สี
แปลง PowerPoint เป็น PNG
โหลดการนำเสนอด้วยคลาส Presentation และเข้าถึงสไลด์ผ่านคอลเลกชัน Presentation::getSlides ตัวอย่างนี้เรนเดอร์ทุกสไลด์โดยใช้ Slide::getImage โดยไม่ระบุพารามิเตอร์เพื่อสร้างรูปย่อ จากนั้นเรียก IImage::save พร้อมกับ ImageFormat::Png เพื่อบันทึกแต่ละสไลด์ที่เรนเดอร์เป็นภาพ PNG
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();
}
Note
การเรียกใช้ Slide::getImage โดยไม่มีพารามิเตอร์จะเรนเดอร์ที่สเกล 0.2 ตัวอย่างเช่น สไลด์ที่มีขนาด 720 × 540 พอยต์ จะสร้างรูปย่อขนาด 144 × 108 พิกเซล เพื่อควบคุมขนาดผลลัพธ์ ให้ใช้การเรียกที่รับสเกลหรือขนาดภาพที่ระบุอย่างชัดเจนตามตัวอย่างด้านล่างแปลง PowerPoint เป็น PNG ด้วยขนาดที่กำหนดเอง
ส่งค่าอัตราส่วนแนวนอนและแนวตั้งไปยัง Slide::getImage เพื่อควบคุมขนาดที่เรนเดอร์ ในตัวอย่างนี้ค่าอัตราส่วนทั้งสองเท่ากับ 2 ดังนั้นสไลด์ที่มีขนาด 720 Г— 540 พอยต์ จะสร้างภาพขนาด 1440 Г— 1080 พิกเซล ค่าอัตราส่วนเท่าเดิมจะรักษาอัตราส่วนของสไลด์ไว้ ภาพแต่ละภาพจะถูกบันทึกในรูปแบบ PNG ด้วย 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();
}
แปลง PowerPoint เป็น PNG ด้วยขนาดที่กำหนดเอง
เพื่อระบุขนาดผลลัพธ์เป็นพิกเซล ให้ส่งขนาดไปยัง Slide::getImage แทนการใช้สเกล ตัวอย่างนี้เรนเดอร์ทุกสไลด์ที่ 960 Г— 720 พิกเซลและบันทึกผลลัพธ์ด้วย IImage::save เลือกขนาดที่ตรงกับอัตราส่วนของสไลด์เพื่อป้องกันการยืดภาพ
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();
}
เลือกสไตล์การเรนเดอร์แบบไล่สี
สมมติว่าหนึ่งสไลด์มีการเติมสีไล่สี แต่การเปลี่ยนแปลงในไฟล์ PNG ที่ส่งออกดูอ่อนกว่าหรือแตกต่างจากที่คุณเห็นใน PowerPoint คุณสามารถใช้เมธอด SaveOptions::setGradientStyle ที่สืบทอดจาก RenderingOptions เพื่อกำหนดวิธีการเรนเดอร์ไล่สีได้
ดาวน์โหลดไฟล์ gradient-styles.pptx แล้ววางไว้ในไดเรกทอรีทำงานของแอปพลิเคชัน สไลด์แรกของไฟล์มีไล่สีเชิงเส้นสองแบบ: สีไซอานไปสีส้มที่ด้านบนและสีน้ำเงินไปสีเหลืองที่ด้านล่าง แต่ละไล่สีมีจุดหยุดสองจุดที่ 0% และ 100%
ตัวอย่างต่อไปนี้โหลดงานนำเสนอและเรนเดอร์สไลด์แรกเดียวกันในทั้งสองโหมดโดยใช้ 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();
}
รูปภาพด้านล่างแสดงผลลัพธ์จากสไลด์เดียวกัน โดยมีไล่สีทั้งสองแบบในแต่ละภาพ:
| Default | PowerPointUI |
|---|---|
![]() |
![]() |
ในตัวอย่างนี้ Default ให้สีกลางที่อ่อนกว่า ในขณะที่ PowerPointUI ให้สีกลางที่เข้มกว่า ความแตกต่างขึ้นอยู่กับสีและจุดหยุดในไล่สี
เลือก Default เมื่อผลลัพธ์มาตรฐานของ Aspose.Slides พอใจคุณ ลองใช้ PowerPointUI เมื่อคุณต้องการให้ผลลัพธ์ตรงกับการแสดงผลใน PowerPoint เปรียบเทียบผลลัพธ์ทั้งสองกับผลลัพธ์ที่คุณต้องการ; ไม่มีโหมดใดที่ดีกันเสมอ
คำถามที่พบบ่อย
ฉันจะส่งออกรูปร่างเฉพาะ เช่น แผนภูมิหรือรูปภาพ แทนการส่งออกสไลด์ทั้งหมดได้อย่างไร?
Aspose.Slides รองรับการ สร้างภาพย่อสำหรับรูปร่างแต่ละอัน ซึ่งทำให้คุณสามารถเรนเดอร์รูปร่างเป็นภาพ PNG
การแปลงแบบขนานได้รับการสนับสนุนบนเซิร์ฟเวอร์หรือไม่?
ใช่ ใช้อินสแตนซ์การนำเสนอแยกกันสำหรับแต่ละเธรดหรือแต่ละกระบวนการ; ไม่แชร์อินสแตนซ์เดียวกันข้ามเธรด.
ข้อจำกัดของโหมดประเมินเมื่อส่งออกเป็น PNG มีอะไรบ้าง?
โหมดประเมิน จะเพิ่มลายน้ำไปยังภาพผลลัพธ์และใช้ ข้อจำกัดอื่น จนกว่าจะมีการใช้ใบอนุญาต.

