Prezentációs diák konvertálása képekké Pythonban

Bevezetés

Az Aspose.Slides for Python via Java képes egyedi diák renderelésére PowerPoint és OpenDocument bemutatókból PNG, JPEG, GIF, TIFF és más képformátumokban.

A dia képpé konvertálásához kövesse az alábbi lépéseket:

  1. Töltse be a bemutatót a Presentation osztállyal.
  2. Válassza ki a renderelni kívánt diát.
  3. Szükség esetén állítsa be a renderelést a RenderingOptions vagy a TiffOptions osztállyal.
  4. Hívja meg a Slide.getImage metódust. Ez egy képobjektust ad vissza.
  5. Mentse el a képet, és adja meg a kimeneti formátumot egy ImageFormat értékkel.

Dia konvertálása PNG képpé

A legegyszerűbb konvertálás az alapértelmezett renderelési beállításokat használja. A kapott képobjektum feldolgozható memóriában vagy menthető fájlba.

Az alábbi Python példa rendereli az első diát, és PNG képként menti:

import jpype
import asposeslides

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

from asposeslides.api import ImageFormat, Presentation

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

    image = slide.getImage()
    try:
        image.save("Slide_0.png", ImageFormat.Png)
    finally:
        image.dispose()
finally:
    presentation.dispose()

Dia konvertálása képekké egyedi méretekkel

Használja a Slide.getImage túlterhelést, amely egy Dimension értéket fogad el, hogy a diát pontos képpont-méretekkel renderelje.

Az alábbi példa egy 1820 × 1040 JPEG képet hoz létre:

import jpype
import asposeslides

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

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

image_size = Dimension(1820, 1040)

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

    image = slide.getImage(image_size)
    try:
        image.save("Slide_0.jpg", ImageFormat.Jpeg)
    finally:
        image.dispose()
finally:
    presentation.dispose()

Dia konvertálása képekké jegyzetekkel és kommentárokkal

Alapértelmezés szerint a dia képei nem tartalmaznak jegyzeteket vagy kommentárokat. Adjon át egy NotesCommentsLayoutingOptions objektumot a RenderingOptions.setSlidesLayoutOptions metódusnak, hogy szabályozza, hol jelenjenek meg a jegyzetek és kommentárok.

Az alábbi példa a csonkított jegyzeteket a dia alá, a kommentárokat pedig a jobb oldalára helyezi:

import jpype
import asposeslides

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

from asposeslides.api import CommentsPositions, ImageFormat, NotesCommentsLayoutingOptions, NotesPositions, Presentation, RenderingOptions
from java.awt import Color

scale_x = 2.0
scale_y = scale_x

comments_area_color = Color(250, 235, 215)

layout_options = NotesCommentsLayoutingOptions()
layout_options.setNotesPosition(NotesPositions.BottomTruncated)
layout_options.setCommentsPosition(CommentsPositions.Right)
layout_options.setCommentsAreaWidth(500)
layout_options.setCommentsAreaColor(comments_area_color)

rendering_options = RenderingOptions()
rendering_options.setSlidesLayoutOptions(layout_options)

presentation = Presentation("Presentation_with_notes_and_comments.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    image = slide.getImage(rendering_options, scale_x, scale_y)
    try:
        image.save("Image_with_notes_and_comments_0.gif", ImageFormat.Gif)
    finally:
        image.dispose()
finally:
    presentation.dispose()

Dia konvertálása képekké TIFF opciókkal

A TiffOptions osztály lehetővé teszi a renderelt TIFF kép méretének, felbontásának és egyéb tulajdonságainak szabályozását.

Az alábbi példa az első diát 2160 × 2880 TIFF képként, 300 DPI felbontással rendereli:

import jpype
import asposeslides

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

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

image_size = Dimension(2160, 2880)

tiff_options = TiffOptions()
tiff_options.setImageSize(image_size)
tiff_options.setDpiX(300)
tiff_options.setDpiY(300)

presentation = Presentation("sample.pptx")
try:
    slide = presentation.getSlides().get_Item(0)

    image = slide.getImage(tiff_options)
    try:
        image.save("output.tiff", ImageFormat.Tiff)
    finally:
        image.dispose()
finally:
    presentation.dispose()

Az összes dia konvertálása képekké

Iterálja végig a diakollekciót, hogy az egész bemutatót képsorozattá konvertálja. A rejtett diák bele vannak foglalva, hacsak nem hagyja ki őket kifejezetten.

Az alábbi példa minden diát JPEG képként renderel, vízszintes és függőleges 2-es méretezési tényezőkkel:

import jpype
import asposeslides

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

from asposeslides.api import ImageFormat, Presentation

scale_x = 2.0
scale_y = scale_x

presentation = Presentation("Presentation.pptx")
try:
    slide_count = presentation.getSlides().size()
    for index in range(slide_count):
        slide = presentation.getSlides().get_Item(index)
        image = slide.getImage(scale_x, scale_y)
        try:
            image.save(f"Slide_{index}.jpg", ImageFormat.Jpeg)
        finally:
            image.dispose()
finally:
    presentation.dispose()

Enhanced Metafile (EMF) kimenet létrehozása

Az Enhanced Metafile (EMF) akkor hasznos, ha vektoralapú grafikákat kell cserélni a Microsoft Office-szal vagy egyéb Windows alkalmazásokkal, amelyek támogatják a Windows metafile-okat. A pixelalapú képhez képest egy EMF meg tudja őrizni a vektoros rajzolási műveleteket, amelyek méretezésekor nem veszítenek annyira a tisztaságukban. Az EMF azonban elsősorban kompatibilitási formátum Windows metafile-t támogató alkalmazások számára, nem pedig általános csereformátum. Emellett a bonyolult diá tartalmak, például bitmap képek és egyes hatások rasterizált elemekként tárolódhatnak a vektoros metafile konténerben.

Dia exportálása EMF-be

A Slide.writeAsEmf metódus egy Slide objektumot EMF formátumban egy cél stream-be ír. Az alábbi példa betölti egy bemutatót, kiválasztja az első diát, és egy EMF fájl streame írásával menti:

import jpype
import asposeslides

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

from asposeslides.api import Presentation
from java.io import FileOutputStream

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

    emf_stream = FileOutputStream("Slide_0.emf")
    try:
        slide.writeAsEmf(emf_stream)
    finally:
        emf_stream.close()
finally:
    presentation.dispose()

A hívó rendelkezik a Slide.writeAsEmf metódusnak átadott stream-mel, és felelős annak lezárásáért, ahogyan a fenti példában látható.

SVG kép konvertálása EMF-be és hozzáadása egy bemutatóhoz

Használja a SvgImage.writeAsEmf metódust az SVG tartalom EMF-be konvertálásához. A kapott bájtok hozzáadhatók a bemutatóhoz a ImageCollection.addImage segítségével, és a diára helyezhetők a ShapeCollection.addPictureFrame metódussal.

Az alábbi példa egy SvgImage objektumot hoz létre SVG markupból, memóriában EMF-be konvertálja, a metafilet az első diára helyezi, és elmenti a bemutatót:

import jpype
import asposeslides

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

from asposeslides.api import Presentation, SaveFormat, ShapeType, SvgImage
from java.io import ByteArrayOutputStream

svg_content = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"200\" height=\"100\"><rect width=\"200\" height=\"100\" fill=\"#4472C4\"/></svg>"
svg_image = SvgImage(svg_content)

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)

    emf_stream = ByteArrayOutputStream()
    try:
        svg_image.writeAsEmf(emf_stream)

        emf_data = emf_stream.toByteArray()
        image = presentation.getImages().addImage(emf_data)
        slide.getShapes().addPictureFrame(ShapeType.Rectangle, 20, 20, 200, 100, image)
    finally:
        emf_stream.close()

    presentation.save("Presentation_with_emf.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

A SvgImage.writeAsEmf nem veszi át a cél stream tulajdonjogát. A ByteArrayOutputStream az összes generált adatot memóriában tárolja, így a ByteArrayOutputStream.toByteArray meghívása előtt nincs szükség pozíció visszaállításra. A visszakapott byte tömb a stream lezárása után is érvényes marad.

Az EMF generálás elérhető azon operációs rendszereken, amelyeket a kiválasztott Aspose.Slides for Python via Java és JDK konfiguráció támogat, azonban a renderelés platformonként eltérő lehet, ha a betűkészletek vagy grafikai függőségek nem állnak rendelkezésre. Telepítse a forrástartalom által használt betűkészleteket vagy konfiguráljon megfelelő helyettesítéseket, kövesse az Aspose.Slides for Python via Java platformkövetelményeket, és ellenőrizze az eredményt a cél EMF-ot fogyasztó alkalmazásban. A Linux és macOS alkalmazások gyakran korlátozott vagy inkonzisztens támogatással rendelkeznek a Windows metafile-ok megjelenítésére és szerkesztésére.

Színes Emoji renderelés

GYIK

Támogatja az Aspose.Slides a diák animációval történő renderelését?

Nem. A Slide.getImage metódus statikus képet renderel a diáról, és nem exportál animációkat.

Exportálhatók rejtett diák képként?

Igen. A rejtett diák is renderelhetők, mint a normál diák. Tartalmazza őket a feldolgozási ciklusban, ahogy a fenti példában is látható.

Megmaradnak az árnyékok és egyéb hatások a diaképekben?

Igen. Az Aspose.Slides árnyékokat, átlátszóságot és egyéb támogatott grafikai hatásokat renderel a diaképekben.