Como salvar e exportar documentos PSD em Python

Como salvar e exportar documentos PSD em Python

Este guia mostra como salvar um documento editado em um caminho de arquivo, em um stream aberto, e como descartar uma imagem carregada posteriormente. PsdImage.save é o único ponto de entrada público para escrever um documento de volta — ele aceita tanto um caminho de arquivo quanto um stream gravável já aberto. O escritor de seção de baixo nível que realiza a codificação real dos bytes é um detalhe de implementação interno, não algo que você chama diretamente.

Guia Passo a Passo

Etapa 1: Instalar 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: Importar as Classes Necessárias

PsdImage é a única classe que os exemplos deste guia precisam:

from aspose_psd_foss.psdimage import PsdImage

Etapa 3: Salvar em um caminho de arquivo

Carregue um documento, faça uma edição e, em seguida, salve-o de volta em um caminho de arquivo:

image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")

Etapa 4: Salvar em um fluxo aberto

Passar um fluxo em vez de um caminho deixa o fluxo aberto após a gravação — você controla quando fechá-lo:

with open("output.psd", "wb") as stream:
    image.save(stream)

Etapa 5: Dispose a Imagem

Libere os recursos que o PsdImage carregado mantém quando terminar de usá-lo:

image.dispose()

Problemas comuns e correções

RuntimeError: PsdImage has been disposed. ao chamar save. A imagem já foi descartada (via dispose() ou um with bloco que saiu) antes save foi chamado. Chame save antes de descartar.

PsdSaveException sobre o comprimento de uma string Pascal. Um valor de string excede 255 bytes — veja Manipulando Exceções do PSD Core and Troubleshooting.

Não há como forçar um contêiner PSD ou PSB ao salvar. Não existe um API público para escolher o formato do contêiner de saída — uma gravação sempre reflete o formato que (is_large_document / is_psb) o documento foi carregado. Se você precisar de um formato de contêiner diferente, não há caminho de conversão suportado nesta compilação FOSS.

Perguntas Frequentes

Salvar em um stream fecha o stream posteriormente?

Não — quando você passa um stream para save, o stream permanece aberto depois, permitindo que você controle seu ciclo de vida (veja a Etapa 4). Salvar em um caminho de arquivo, por contraste, abre e fecha o arquivo internamente.

Posso chamar o gravador interno de seção diretamente em vez de save?

Não — o gravador de nível de seção é um detalhe interno de implementação invocado por PsdImage.save. Não existe maneira documentada e suportada de escrever um documento fora da chamada a save em uma instância de PsdImage.

Ver também

 Português