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:
- Utwórz instancję klasy Presentation.
- Uzyskaj referencję do slajdu, używając jego identyfikatora lub indeksu.
- Pobierz miniaturę obrazu kształtu kształtu na wskazanym slajdzie w domyślnej skali.
- 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:
- Utwórz instancję klasy Presentation.
- Uzyskaj referencję do slajdu, używając jego identyfikatora lub indeksu.
- Pobierz miniaturę obrazu kształtu kształtu na wskazanym slajdzie z wymiarami określonymi przez użytkownika.
- 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:
- Utwórz instancję klasy Presentation.
- Uzyskaj referencję do slajdu, używając jego identyfikatora lub indeksu.
- Pobierz obraz miniatury kształtu na wskazanym slajdzie, używając jego granic wyglądu.
- 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.