Como trabalhar com o Aspose.PSD FOSS Core API em Python

Como trabalhar com o Aspose.PSD FOSS Core API em Python

Aspose.PSD FOSS para Python carrega e inspeciona a estrutura do documento PSD/PSB por meio de PsdImage, uma subclasse de Image. Este artigo aborda o carregamento de um documento, a leitura de seu cabeçalho e recursos de imagem, e a sua gravação de volta ao disco.

Guia passo a passo

Etapa 1: Instale o pacote

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATH

Etapa 2: Importe as classes necessárias

PsdImage é o ponto de entrada usado ao longo deste guia:

from aspose_psd_foss.psdimage import PsdImage

Etapa 3: Carregar um Documento PSD/PSB

PsdImage.load() abre um documento a partir de um caminho de arquivo ou de um fluxo:

from aspose_psd_foss.psdimage import PsdImage

image = PsdImage.load("input.psd")

Etapa 4: Inspecionar o Cabeçalho do Documento

PsdImage expõe os campos de cabeçalho lidos do documento analisado: width, height, bits_per_channel, color_mode (um valor ColorModes), e compression (um valor CompressionMethod):

print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}")    # e.g. ColorModes.RGB
print(f"Compression: {image.compression}")  # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")

Os valores de ColorModes são BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE e LAB. Os valores de CompressionMethod são RAW, RLE, ZIP_WITHOUT_PREDICTION e ZIP_WITH_PREDICTION.


Etapa 5: Ler Blocos de Recursos de Imagem

image_resources retorna as entradas ResourceBlock analisadas do documento. Cada bloco expõe id, name e size:

for resource in image.image_resources:
    print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")

image_resources é somente leitura nesta compilação FOSS — atribuir a ele gera NotSupportedException (veja Limitações Conhecidas no FAQ).


Etapa 6: Salvar o Documento

Escreva o documento de volta ao disco e, em seguida, libere os recursos da imagem:

image.save("output.psd")
image.dispose()

Problemas Comuns e Soluções

PsdLoadException ao carregar um arquivo. A entrada não é um documento PSD/PSB válido, ou seu cabeçalho falhou na validação. Confirme que o arquivo é um verdadeiro arquivo PSD/PSB antes de carregá-lo.

NotSupportedException ao definir image_resources or global_layer_resources. Esses setters não são suportados nesta compilação FOSS. Trate image_resources como somente leitura.

Perguntas Frequentes

Posso carregar um arquivo PSD a partir de um stream em vez de um caminho de arquivo?

Sim — PsdImage.load() aceita tanto uma string de caminho de arquivo quanto um stream legível (io.BytesIO/io.BufferedIOBase).

O image_resources inclui dados de camada?

Não. image_resources contém blocos de recursos ao nível do documento (analisados a partir da seção de recursos de imagem PSD). Os dados ao nível da camada são lidos através de PsdImage.layers — veja Trabalhando com Camadas.

É PsdImage.version a versão do formato de arquivo PSD?

Não. PsdImage.version relata um número de versão API interno compatível com Aspose.PSD (atualmente 6) — não está relacionado a se o arquivo carregado é PSD ou PSB. Seu setter aceita apenas o valor 6; qualquer outro valor gera ValueError.

Ver também

 Português