Tworzenie miniatur kształtów prezentacji na Androidzie
Wprowadzenie
Aspose.Slides for Android via Java można używać 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 osobno w przeglądarce obrazów. W takich przypadkach Aspose.Slides for Android via Java pomaga im generować miniaturki obrazów kształtów slajdu.
W tym temacie pokażemy, jak generować miniaturki slajdów w różnych sytuacjach:
- Generowanie miniaturki kształtu wewnątrz slajdu.
- Generowanie miniaturki kształtu dla kształtu slajdu z wymiarami określonymi przez użytkownika.
- Generowanie miniaturki kształtu w granicach wyglądu kształtu.
Generowanie miniaturki kształtu ze slajdu
Aby wygenerować miniaturkę kształtu z dowolnego slajdu przy użyciu Aspose.Slides for Android via Java, wykonaj następujące kroki:
- Utwórz instancję klasy Presentation.
- Uzyskaj odwołanie do dowolnego slajdu, używając jego ID lub indeksu.
- Pobierz miniaturkę obrazu kształtu referowanego slajdu w domyślnej skali.
- Zapisz miniaturkę w wybranym przez siebie formacie obrazu.
Ten przykład kodu pokazuje, jak generować miniaturkę kształtu ze slajdu:
// Utwórz obiekt klasy Presentation reprezentujący plik prezentacji
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Utwórz obraz w pełnej skali
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage();
// Zapisz obraz na dysku w formacie PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Generowanie miniaturki ze skalowaniem określonym przez użytkownika
Aby wygenerować miniaturkę kształtu slajdu przy użyciu Aspose.Slides for Android via Java, wykonaj następujące kroki:
- Utwórz instancję klasy Presentation.
- Uzyskaj odwołanie do dowolnego slajdu, używając jego ID lub indeksu.
- Pobierz miniaturkę obrazu kształtu referowanego slajdu z wymiarami określonymi przez użytkownika.
- Zapisz miniaturkę w wybranym przez siebie formacie obrazu.
Ten przykład kodu pokazuje, jak generować miniaturkę kształtu na podstawie zdefiniowanego czynnika skalowania:
// Utwórz obiekt klasy Presentation reprezentujący plik prezentacji
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Utwórz obraz w pełnej skali
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Shape, 1, 1);
// Zapisz obraz na dysku w formacie PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Tworzenie miniaturki wyglądu kształtu opartej na granicach
Ta metoda tworzenia miniatur kształtów pozwala programistom generować miniaturkę w granicach wyglądu kształtu. Uwzględnia wszystkie efekty kształtu. Wygenerowana miniaturka kształtu jest ograniczona granicami slajdu. Aby wygenerować miniaturkę kształtu slajdu w granicach jego wyglądu, wykonaj następujące kroki:
- Utwórz instancję klasy Presentation.
- Uzyskaj odwołanie do dowolnego slajdu, używając jego ID lub indeksu.
- Pobierz obraz miniaturki referowanego slajdu, używając granic kształtu jako wyglądu.
- Zapisz miniaturkę w wybranym przez siebie formacie obrazu.
Ten przykład kodu opiera się na powyższych krokach:
// Utwórz obiekt klasy Presentation reprezentujący plik prezentacji
Presentation pres = new Presentation("Thumbnail.pptx");
try {
// Utwórz obraz w pełnej skali
IImage slideImage = pres.getSlides().get_Item(0).getShapes().get_Item(0).getImage(ShapeThumbnailBounds.Appearance, 1, 1);
// Zapisz obraz na dysku w formacie PNG
try {
slideImage.save("output.png", ImageFormat.Png);
} finally {
if (slideImage != null) slideImage.dispose();
}
} finally {
if (pres != null) pres.dispose();
}
Uzyskanie rzeczywistych granic wizualnych kształtu
Właściwości ramki IShape — 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 ustawiony wzdłuż osi. Rotacja, kontury, końcówki strzałek, układ i przepełnienie tekstu, generowana geometria SmartArt oraz inne efekty renderowania mogą zmienić zajmowany obszar.
Użyj Shape.getVisualBounds aby obliczyć ten zajęty obszar bez tworzenia obrazu. Metoda zwraca RectF w współrzędnych slajdu. Zwrócony prostokąt nie jest przycinany do slajdu, więc jego współrzędne mogą być ujemne, gdy treść wykracza poza początek slajdu.
Shape.getVisualBounds nie jest obecnie zadeklarowana w interfejsie IShape. Dlatego zachowaj kształt pobrany z kolekcji kształtów slajdu jako wartość interfejsu i rzutuj go tylko przy wywołaniu tej metody.
Poniższy przykład pobiera i porównuje granice ramki oraz granice wizualne:
Presentation presentation = new Presentation("example.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IShape shape = slide.getShapes().get_Item(0);
RectF visualBounds = ((Shape) shape).getVisualBounds();
float frameLeft = shape.getX();
float frameTop = shape.getY();
float frameRight = frameLeft + shape.getWidth();
float frameBottom = frameTop + shape.getHeight();
RectF frameBounds = new RectF(frameLeft, frameTop, frameRight, frameBottom);
System.out.println("Frame bounds: " + frameBounds);
System.out.println("Visual bounds: " + visualBounds);
} finally {
presentation.dispose();
}
Tego samego RectF można używać do wyrównywania pobliskich kształtów do jego lewej, prawej, górnej lub dolnej krawędzi; rezerwowania wystarczającej przestrzeni w generowanym układzie; lub wykrywania treści poza dozwolonym obszarem. Granice wizualne są szczególnie przydatne dla SmartArt, pól tekstowych, strzałek, obrazów, obróconych 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 IShape.getImage gdy musisz renderować kształt. Z ShapeThumbnailBounds ShapeThumbnailBounds.Shape określa rozmiar obrazu na podstawie granic kształtu, włącznie z ustawieniami konturu, natomiast ShapeThumbnailBounds.Appearance określa rozmiar na podstawie wyglądu kształtu i ogranicza wynik do granic slajdu. Natomiast Shape.getVisualBounds zwraca jedynie 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 można również wyeksportować jako wektorowy SVG zapisując zawartość kształtu jako SVG.
Jaka jest różnica między granicami Shape a Appearance przy renderowaniu miniaturki?
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 zostanie wyrenderowany jako miniaturka?
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 miniaturka lub jako SVG.
Czy czcionki zainstalowane w systemie wpływają na jakość miniaturk tekstowych kształtów?
Tak. Należy udostępnić wymagane czcionki (lub skonfigurować substytucje czcionek), aby uniknąć niepożądanych zastąpień i przeskładania tekstu.