Como carregar um documento PSD no Python

Como carregar um documento PSD no Python

PsdImage.load é o único ponto de entrada público para abrir um documento PSD/PSB — aceita tanto um caminho de arquivo quanto um fluxo legível já aberto. O leitor de baixo nível, seção por seção, ao qual delega internamente, não é algo que você chame diretamente.

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

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

Etapa 3: Carregue a partir de um caminho de arquivo

image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()

Etapa 4: Carregar a partir de um Stream

Um stream não precisa ser seekable — load lê todo o seu conteúdo para um buffer interno antes da análise:

with open("input.psd", "rb") as stream:
    image = PsdImage.load(stream)

print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()

Problemas Comuns e Soluções

FileNotFoundError: File not found: .... O caminho passado para load não aponta para um arquivo existente — load checks os.path.isfile antes de tentar abri-lo.

PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. O fluxo de origem ficou sem dados no meio da análise (um EOFError enquanto lê) — o arquivo provavelmente está truncado.

PsdLoadException: Failed to read PSD/PSB data from the source stream. Ocorreu um erro de E/S ao ler do próprio fluxo, encapsulado e relançado como um PsdLoadException.

ArgumentNullException ao chamar load. load foi chamado com None como o argumento de stream.

Perguntas Frequentes

Preciso reposicionar o stream para o início antes de chamar load?

Não — se o stream for buscável, load restaura sua posição original após a leitura; se não for buscável, load ainda funciona, pois ele armazena em buffer o conteúdo do stream internamente antes da análise.

Qual é a diferença entre as duas falhas FileNotFoundError/PsdLoadException acima?

Um caminho de arquivo ausente levanta o erro padrão FileNotFoundError antes que qualquer análise comece. Um PsdLoadException significa que um arquivo (ou stream) foi encontrado e aberto, mas os dados PSD/PSB em si estão truncados, corrompidos ou de outra forma ilegíveis após o início da análise — veja também Troubleshooting para os relacionados a versão e limites PsdLoadException variantes.

Ver também

 Português