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:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odwołanie do dowolnego slajdu, używając jego ID lub indeksu.
  3. Pobierz miniaturkę obrazu kształtu referowanego slajdu w domyślnej skali.
  4. 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:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odwołanie do dowolnego slajdu, używając jego ID lub indeksu.
  3. Pobierz miniaturkę obrazu kształtu referowanego slajdu z wymiarami określonymi przez użytkownika.
  4. 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:

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odwołanie do dowolnego slajdu, używając jego ID lub indeksu.
  3. Pobierz obraz miniaturki referowanego slajdu, używając granic kształtu jako wyglądu.
  4. 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.