แปลงสไลด์ PowerPoint เป็น PNG ใน Python

ภาพรวม

บทความนี้อธิบายวิธีแปลงสไลด์การนำเสนอเป็นภาพ PNG โดยใช้ Aspose.Slides สำหรับ Python ผ่าน Java คุณสามารถโหลดงานนำเสนอในรูปแบบต่าง ๆ เช่น PPT, PPTX และ ODP เรนเดอร์แต่ละสไลด์และบันทึกเป็นไฟล์ PNG แยกกัน

ตัวอย่างด้านล่างแสดงการเรนเดอร์ที่สเกลเริ่มต้น การเพิ่มสเกล การระบุขนาดผลลัพธ์เป็นพิกเซล และการเลือกสไตล์การเรนเดอร์แบบไล่สี

แปลง PowerPoint เป็น PNG

โหลดงานนำเสนอด้วยคลาส Presentation และเข้าถึงสไลด์ผ่านคอลเลกชัน Presentation.getSlides ตัวอย่างนี้เรนเดอร์ทุกสไลด์ด้วย Slide.getImage โดยไม่มีพารามิเตอร์เพื่อสร้างรูปย่อ จากนั้นเรียก IImage.save พร้อมกับ ImageFormat.Png เพื่อบันทึกสไลด์ที่เรนเดอร์แต่ละอันเป็นไฟล์ PNG

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation

presentation = Presentation("presentation.pptx")
try:
    for index, slide in enumerate(presentation.getSlides()):
        image = slide.getImage()
        try:
            image.save(f"slide_{index}.png", ImageFormat.Png)
        finally:
            image.dispose()
finally:
    presentation.dispose()

แปลง PowerPoint เป็น PNG ด้วยมิติที่กำหนดเอง

ส่งค่าสเกลแนวนอนและแนวตั้งไปยัง Slide.getImage เพื่อควบคุมขนาดที่เรนเดอร์ ในตัวอย่างนี้ทั้งสองค่ามีค่าเป็น 2 ดังนั้นสไลด์ขนาด 720 × 540 จุดจะให้ภาพ 1440 × 1080 พิกเซล ค่าสเกลที่เท่ากันจะรักษอัตราส่วนของสไลด์ไว้แต่ละภาพที่เรนเดอร์จะถูกบันทึกในรูปแบบ PNG

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation

presentation = Presentation("presentation.pptx")
try:
    scale_x = 2.0
    scale_y = scale_x

    for index, slide in enumerate(presentation.getSlides()):
        image = slide.getImage(scale_x, scale_y)
        try:
            image.save(f"slide_{index}.png", ImageFormat.Png)
        finally:
            image.dispose()
finally:
    presentation.dispose()

แปลง PowerPoint เป็น PNG ด้วยขนาดที่กำหนดเอง

เพื่อระบุขนาดผลลัพธ์เป็นพิกเซล ให้ส่งขนาดไปยัง Slide.getImage แทนการใช้สเกลแฟกเตอร์ ตัวอย่างนี้เรนเดอร์ทุกสไลด์ที่ 960 × 720 พิกเซลและบันทึกผลลัพธ์ในรูปแบบ PNG เลือกขนาดที่สอดคล้องกับอัตราส่วนของสไลด์เพื่อหลีกเลี่ยงการยืดภาพ

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import ImageFormat, Presentation
from java.awt import Dimension

presentation = Presentation("presentation.pptx")
try:
    image_size = Dimension(960, 720)

    for index, slide in enumerate(presentation.getSlides()):
        image = slide.getImage(image_size)
        try:
            image.save(f"slide_{index}.png", ImageFormat.Png)
        finally:
            image.dispose()
finally:
    presentation.dispose()

เลือกสไตล์การเรนเดอร์แบบไล่สี

สมมติว่ามีสไลด์ที่มีการเติมสีไล่สี แต่การแปลงเป็น PNG แล้วสีไล่สีดูอ่อนลงหรือแตกต่างจากที่คุณเห็นใน PowerPoint คุณสามารถใช้เมธอด SaveOptions.setGradientStyle ที่สืบทอดมาจาก RenderingOptions เพื่อกำหนดวิธีการเรนเดอร์ไล่สี

ดาวน์โหลด gradient-styles.pptx แล้ววางไว้ในไดเรกทอรีทำงานของแอปพลิเคชัน สไลด์แรกของไฟล์นี้มีไล่สีเชิงเส้นสองแบบ: จากสีฟ้าอมเขียวไปสีส้มที่ด้านบนและจากสีน้ำเงินไปสีเหลืองที่ด้านล่าง แต่ละไล่สีมีจุดหยุดสองจุดที่ 0% และ 100%

ตัวอย่างต่อไปนี้โหลดงานนำเสนอนี้และเรนเดอร์สไลด์แรกเดียวกันในสองโหมดด้วย Slide.getImage

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import GradientStyle, ImageFormat, Presentation, RenderingOptions

presentation = Presentation("gradient-styles.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    gradient_styles = (GradientStyle.Default, GradientStyle.PowerPointUI)
    for style in gradient_styles:
        options = RenderingOptions()
        options.setGradientStyle(style)

        style_name = "Default" if style == GradientStyle.Default else "PowerPointUI"
        image = slide.getImage(options, 1.0, 1.0)
        try:
            image.save(f"gradient-{style_name}.png", ImageFormat.Png)
        finally:
            image.dispose()
finally:
    presentation.dispose()
Default PowerPointUI
ไล่สีจากสีฟ้าอมเขียวไปสีส้มและจากสีน้ำเงินไปสีเหลืองที่เรนเดอร์ด้วย Default ไล่สีเดียวกันที่เรนเดอร์ด้วย PowerPointUI

ในตัวอย่างนี้ Default จะให้สีกลางที่อ่อนกว่าในขณะที่ PowerPointUI ให้สีกลางที่เข้มกว่า ความแตกต่างขึ้นอยู่กับสีและจุดหยุดในไล่สี

เลือก Default เมื่อผลลัพธ์มาตรฐานของ Aspose.Slides ตอบสนองความต้องการของคุณ ลอง PowerPointUI เมื่อคุณต้องการให้ผลลัพธ์ตรงกับลักษณะใน PowerPoint เปรียบเทียบผลลัพธ์ทั้งสองกับผลลัพธ์ที่คุณต้องการ; ไม่มีโหมดใดที่ดีกว่าตลอดเวลา

คำถามที่พบบ่อย

ฉันจะส่งออกรูปทรงเฉพาะ เช่น แผนภูมิหรือรูปภาพ แทนการส่งออกสไลด์ทั้งหมดได้อย่างไร?

Aspose.Slides รองรับ การสร้างรูปย่อสำหรับรูปทรงแต่ละตัว, ซึ่งช่วยให้คุณเรนเดอร์รูปทรงเป็นภาพ PNG

การแปลงแบบขนานได้รับการสนับสนุนบนเซิร์ฟเวอร์หรือไม่?

ใช่ ใช้อินสแตนซ์งานนำเสนอแยกกันสำหรับแต่ละเธรดหรือโพรเซส; ห้ามแชร์อินสแตนซ์เดียวกันข้ามเธรด

ข้อจำกัดของรุ่นประเมินค่าเมื่อส่งออกเป็น PNG มีอะไรบ้าง?

โหมดประเมินค่าจะเพิ่มลายน้ำในภาพผลลัพธ์และใช้ ข้อจำกัดอื่น ๆ จนกว่าจะมีการใช้ใบอนุญาต