Utwórz miniatury kształtów prezentacji w Python via Java

Wstęp

Aspose.Slides for Python via Java może być używany do tworzenia plików prezentacji, w których każda strona odpowiada slajdowi. Slajdy można przeglądać, otwierając pliki prezentacji w programie Microsoft PowerPoint. Jednak programiści czasami muszą wyświetlać obrazy kształtów oddzielnie w przeglądarce obrazów. W takich przypadkach Aspose.Slides for Python via Java pomaga generować miniatury obrazów kształtów slajdu.

Ten artykuł wyjaśnia, jak generować miniatury kształtów na różne sposoby:

  • Generowanie miniatury kształtu wewnątrz slajdu.
  • Generowanie miniatury kształtu slajdu z wymiarami określonymi przez użytkownika.
  • Generowanie miniatury kształtu w granicach wyglądu kształtu.

Generowanie miniatury kształtu ze slajdu

Aby wygenerować miniaturę kształtu z dowolnego slajdu przy użyciu Aspose.Slides for Python via Java, wykonaj następujące kroki:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj referencję do slajdu, używając jego identyfikatora lub indeksu.
  3. Pobierz miniaturę obrazu kształtu kształtu na wskazanym slajdzie w domyślnej skali.
  4. Zapisz obraz miniatury w preferowanym formacie obrazu.

Przykładowy kod pokazuje, jak wygenerować miniaturę kształtu ze slajdu:

import jpype
import asposeslides

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

from asposeslides.api import ImageFormat, Presentation

# Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
presentation = Presentation("Thumbnail.pptx")
try:
    # Utwórz obraz w pełnej skali.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage()
    try:
        # Zapisz obraz na dysku w formacie PNG.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

Generowanie miniatury z określonym przez użytkownika współczynnikiem skalowania

Aby wygenerować miniaturę kształtu slajdu przy użyciu Aspose.Slides for Python via Java, wykonaj następujące kroki:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj referencję do slajdu, używając jego identyfikatora lub indeksu.
  3. Pobierz miniaturę obrazu kształtu kształtu na wskazanym slajdzie z wymiarami określonymi przez użytkownika.
  4. Zapisz obraz miniatury w preferowanym formacie obrazu.

Przykładowy kod pokazuje, jak wygenerować miniaturę kształtu na podstawie określonego współczynnika skalowania:

import jpype
import asposeslides

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

from asposeslides.api import ImageFormat, Presentation, ShapeThumbnailBounds

# Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
presentation = Presentation("Thumbnail.pptx")
try:
    # Utwórz obraz skalowany współczynnikiem 2 w obu kierunkach.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Shape, 2, 2)
    try:
        # Zapisz obraz na dysku w formacie PNG.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

Utworzenie miniatury wyglądu kształtu opartej na granicach

Ta metoda tworzenia miniatur kształtów pozwala programistom wygenerować miniaturę w granicach wyglądu kształtu. Uwzględnia wszystkie efekty kształtu. Wygenerowana miniatura kształtu jest ograniczona granicami slajdu. Aby wygenerować miniaturę kształtu slajdu w granicach jego wyglądu, wykonaj następujące kroki:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj referencję do slajdu, używając jego identyfikatora lub indeksu.
  3. Pobierz obraz miniatury kształtu na wskazanym slajdzie, używając jego granic wyglądu.
  4. Zapisz obraz miniatury w preferowanym formacie obrazu.

Przykładowy kod oparty jest na powyższych krokach:

import jpype
import asposeslides

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

from asposeslides.api import ImageFormat, Presentation, ShapeThumbnailBounds

# Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji.
presentation = Presentation("Thumbnail.pptx")
try:
    # Utwórz obraz w pełnej skali.
    shape_image = presentation.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Appearance, 1, 1)
    try:
        # Zapisz obraz na dysku w formacie PNG.
        shape_image.save("output.png", ImageFormat.Png)
    finally:
        shape_image.dispose()
finally:
    presentation.dispose()

Pobranie rzeczywistych granic wizualnych kształtu

Właściwości ramki Shape — metody getX, getY, getWidth i getHeight — opisują prostokąt przechowywany w modelu prezentacji. Treść rzeczywiście renderowana może wykraczać poza tę ramkę lub zajmować inny prostokąt wyrównany do osi. Rotacja, kontury, groty strzałek, układ i przepełnienie tekstu, generowana geometria SmartArt oraz inne efekty renderowania mogą zmienić zajęty obszar.

Użyj Shape.getVisualBounds, aby obliczyć ten zajęty obszar bez tworzenia obrazu. Metoda zwraca Rectangle2D.Float w współrzędnych slajdu. Zwrócony prostokąt nie jest przycinany do slajdu, więc jego współrzędne mogą być ujemne, gdy zawartość wykracza poza początek slajdu.

Poniższy przykład pobiera i porównuje granice ramki oraz wizualne:

import jpype
import asposeslides

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

from asposeslides.api import Presentation
from java.awt.geom import Rectangle2D

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

    visual_bounds = shape.getVisualBounds()
    frame_bounds = Rectangle2D.Float(shape.getX(), shape.getY(), shape.getWidth(), shape.getHeight())

    print("Frame bounds:", frame_bounds)
    print("Visual bounds:", visual_bounds)
finally:
    presentation.dispose()

Ten sam Rectangle2D.Float może być użyty do wyrównywania pobliskich kształtów do jego lewej, prawej, górnej lub dolnej krawędzi; rezerwowania wystarczającej przestrzeni w wygenerowanym układzie; lub wykrywania zawartości poza dozwolonym obszarem. Granice wizualne są szczególnie przydatne dla SmartArt, pól tekstowych, strzałek, obrazów, obrotowych kształtów i grup kształtów, gdzie przechowywana ramka może nie odzwierciedlać pełnego wyniku renderowania.

Użyj Shape.getVisualBounds, gdy potrzebujesz współrzędnych do układu lub walidacji i nie potrzebujesz bitmapy. Użyj Shape.getImage, gdy potrzebujesz renderować kształt. Z ShapeThumbnailBounds, ShapeThumbnailBounds.Shape określa rozmiar obrazu na podstawie granic kształtu, włączając ustawienia konturu, podczas gdy ShapeThumbnailBounds.Appearance określa rozmiar na podstawie wyglądu kształtu i ogranicza wynik do granic slajdu. Natomiast Shape.getVisualBounds zwraca tylko obliczony prostokąt i nie przycina go do slajdu.

FAQ

Jakie formaty obrazu można używać przy zapisywaniu miniatur kształtów?

PNG, JPEG, BMP, GIF, TIFF, i inne. Kształty mogą być również eksportowane jako wektorowy SVG, zapisując zawartość kształtu jako SVG.

Jaka jest różnica między granicami Shape a Appearance przy renderowaniu miniatury?

Shape używa geometrii kształtu; Appearance uwzględnia efekty wizualne (cienie, poświaty itp.).

Co się stanie, jeśli kształt jest oznaczony jako ukryty? Czy nadal będzie renderowany jako miniatura?

Ukryty kształt pozostaje częścią modelu i może być renderowany; flaga ukrycia wpływa na wyświetlanie pokazu slajdów, ale nie uniemożliwia generowania obrazu kształtu.

Czy grupowe kształty, wykresy, SmartArt i inne złożone obiekty są obsługiwane?

Tak. Każdy obiekt reprezentowany jako Shape (w tym GroupShape, Chart, i SmartArt) może być zapisany jako miniatura lub jako SVG.

Czy czcionki zainstalowane w systemie wpływają na jakość miniatur kształtów tekstowych?

Tak. Należy dostarczyć wymagane czcionki (lub skonfigurować substytucje czcionek), aby uniknąć niepożądanych fallbacków i zmiany układu tekstu.