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:$PYTHONPATHEtapa 2: Importe as classes necessárias
PsdImage é o ponto de entrada usado ao longo deste guia:
from aspose_psd_foss.psdimage import PsdImageEtapa 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.