Criar miniaturas de formas de apresentação em Python

Introdução

Aspose.Slides for Python via .NET é usado para criar arquivos de apresentação nos quais cada página é um slide. Você pode visualizar esses slides no Microsoft PowerPoint abrindo o arquivo de apresentação. No entanto, os desenvolvedores às vezes precisam visualizar imagens de formas separadamente em um visualizador de imagens. Nesses casos, o Aspose.Slides pode gerar imagens em miniatura para as formas dos slides. Este artigo explica como usar esse recurso.

Gerar Miniaturas de Formas a partir de Slides

Quando você precisa de uma pré‑visualização de um objeto específico em vez de todo o slide, pode renderizar uma miniatura para uma forma individual. O Aspose.Slides permite exportar qualquer forma para uma imagem, facilitando a criação de pré‑visualizações leves, ícones ou recursos para processamento posterior.

Para gerar uma miniatura a partir de qualquer forma:

  1. Crie uma instância da classe Presentation.
  2. Obtenha uma referência a um slide pelo seu ID ou índice.
  3. Obtenha uma referência a uma forma naquele slide.
  4. Renderize a imagem em miniatura da forma.
  5. Salve a imagem em miniatura no formato desejado.

O exemplo abaixo gera uma miniatura de forma.

import aspose.slides as slides

# Instanciar a classe Presentation para abrir o arquivo de apresentação.
with slides.Presentation("hello_world.pptx") as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes[0]
    
    # Criar uma imagem com a escala padrão.
    with shape.get_image() as thumbnail:
        # Salvar a imagem no disco no formato PNG.
        thumbnail.save("shape_thumbnail.png", slides.ImageFormat.PNG)

Gerar Miniaturas com um Fator de Escala Personalizado

Esta seção mostra como gerar miniaturas de formas com um fator de escala definido pelo usuário no Aspose.Slides. Ao controlar a escala, você pode ajustar finamente o tamanho da miniatura para atender a pré‑visualizações, exportações ou telas de alta DPI.

Para gerar uma miniatura para qualquer forma em um slide:

  1. Crie uma instância da classe Presentation.
  2. Obtenha um slide pelo seu ID ou índice.
  3. Obtenha a forma alvo naquele slide.
  4. Renderize a imagem em miniatura da forma com a escala especificada.
  5. Salve a imagem em miniatura no formato desejado.

O exemplo abaixo gera uma miniatura com um fator de escala definido pelo usuário.

import aspose.slides as slides

scale_x = 2.0
scale_y = scale_x

# Instanciar a classe Presentation para abrir o arquivo de apresentação.
with slides.Presentation("hello_world.pptx") as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes[0]
    
    # Criar uma imagem com a escala definida.
    with shape.get_image(slides.ShapeThumbnailBounds.SHAPE, scale_x, scale_y) as thumbnail:
        # Salvar a imagem no disco no formato PNG.
        thumbnail.save("scaling_factor.png", slides.ImageFormat.PNG)

Gerar Miniaturas Usando os Limites de Aparência de uma Forma

Esta seção mostra como gerar uma miniatura dentro dos limites de aparência de uma forma. Ela considera todos os efeitos da forma. A miniatura gerada é limitada pelos limites do slide.

Para gerar uma miniatura de qualquer forma de slide dentro dos limites de sua aparência:

  1. Crie uma instância da classe Presentation.
  2. Obtenha um slide pelo seu ID ou índice.
  3. Obtenha a forma alvo naquele slide.
  4. Renderize a imagem em miniatura da forma com os limites especificados.
  5. Salve a imagem em miniatura no formato de imagem desejado.

O exemplo abaixo cria uma miniatura com limites definidos pelo usuário.

import aspose.slides as slides

image_bounds = slides.ShapeThumbnailBounds.APPEARANCE

# Instanciar a classe Presentation para abrir o arquivo de apresentação.
with slides.Presentation("hello_world.pptx") as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes[0]

    # Criar uma imagem de forma com limites de aparência.
    with shape.get_image(image_bounds, 1.0, 1.0) as thumbnail:
        # Salvar a imagem no disco no formato PNG.
        thumbnail.save("apperance_bounds.png", slides.ImageFormat.PNG)

Obter os Limites Visuais Reais de uma Forma

As propriedades de quadro de uma ShapeShape.x, Shape.y, Shape.width e Shape.height — descrevem o retângulo armazenado no modelo da apresentação. O conteúdo que é realmente renderizado pode se estender além desse quadro ou ocupar um retângulo alinhado aos eixos diferente. Rotação, contornos, pontas de flecha, layout e transbordamento de texto, geometria de SmartArt gerada e outros efeitos de renderização podem alterar a área ocupada.

Use Shape.get_visual_bounds para calcular essa área ocupada sem criar uma imagem. O método retorna um retângulo de ponto flutuante nas coordenadas do slide. O retângulo retornado não é recortado ao slide, portanto suas coordenadas podem ser negativas quando o conteúdo se estende além da origem do slide.

O exemplo a seguir obtém e compara os limites de quadro e os limites visuais:

import aspose.pydrawing as drawing
import aspose.slides as slides

with slides.Presentation("example.pptx") as presentation:
    slide = presentation.slides[0]
    shape = slide.shapes[0]

    visual_bounds = shape.get_visual_bounds()

    frame_values = (shape.x, shape.y, shape.width, shape.height)
    visual_values = (visual_bounds.x, visual_bounds.y, visual_bounds.width, visual_bounds.height)

    print(f"Frame bounds (x, y, width, height): {frame_values}")
    print(f"Visual bounds (x, y, width, height): {visual_values}")

O mesmo retângulo pode ser usado para alinhar formas próximas à sua borda left, right, top ou bottom; reservar espaço suficiente em um layout gerado; ou detectar conteúdo fora de uma região permitida. Os limites visuais são especialmente úteis para SmartArt, caixas de texto, setas, imagens, formas rotacionadas e formas agrupadas, onde o quadro armazenado pode não representar o resultado renderizado completo.

Use Shape.get_visual_bounds quando precisar de coordenadas para layout ou validação e não precisar de um bitmap. Use Shape.get_image quando precisar renderizar a forma. Com ShapeThumbnailBounds, ShapeThumbnailBounds.SHAPE dimensiona a imagem a partir dos limites da forma, incluindo configurações de contorno, enquanto ShapeThumbnailBounds.APPEARANCE a dimensiona a partir da aparência da forma e restringe o resultado aos limites do slide. Em contraste, Shape.get_visual_bounds retorna apenas o retângulo calculado e não o recorta ao slide.

FAQ

Quais formatos de imagem podem ser usados ao salvar miniaturas de forma?

PNG, JPEG, BMP, GIF, TIFF, e outros. As formas também podem ser exportadas como SVG vetorial salvando o conteúdo da forma como SVG.

Qual é a diferença entre os limites SHAPE e APPEARANCE ao renderizar uma miniatura?

SHAPE usa a geometria da forma; APPEARANCE leva em conta os efeitos visuais (sombras, brilhos, etc.).

O que acontece se uma forma for marcada como oculta? Ela ainda será renderizada como miniatura?

Uma forma oculta continua fazendo parte do modelo e pode ser renderizada; a flag oculta afeta a exibição da apresentação, mas não impede a geração da imagem da forma.

Formas agrupadas, gráficos, SmartArt e outros objetos complexos são suportados?

Sim. Qualquer objeto representado como Shape (incluindo GroupShape, Chart, e SmartArt) pode ser salvo como miniatura ou como SVG.

As fontes instaladas no sistema afetam a qualidade das miniaturas de formas de texto?

Sim. Você deve fornecer as fontes necessárias (ou configurar substituições de fonte) para evitar substituições indesejadas e reajuste de texto.