Cómo guardar y exportar documentos PSD en Python
Esta guía muestra cómo guardar un documento editado en una ruta de archivo, en un flujo abierto, y cómo liberar una imagen cargada posteriormente. PsdImage.save es el único punto de entrada público para escribir un documento de vuelta — acepta tanto una ruta de archivo como un flujo escribible ya abierto. El escritor de secciones de bajo nivel que realiza la codificación real de bytes es un detalle de implementación interno, no algo que se llame directamente.
Guía paso a paso
Paso 1: Instalar el paquete
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:$PYTHONPATHPaso 2: Importar las clases requeridas
PsdImage es la única clase que necesitan los ejemplos de esta guía:
from aspose_psd_foss.psdimage import PsdImagePaso 3: Guardar en una ruta de archivo
Cargue un documento, haga una edición y luego guárdelo de nuevo en una ruta de archivo:
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")Paso 4: Guardar en un flujo abierto
Pasar un flujo en lugar de una ruta deja el flujo abierto después de guardar — usted controla cuándo cerrarlo:
with open("output.psd", "wb") as stream:
image.save(stream)Paso 5: Liberar la imagen
Libere los recursos que mantiene el PsdImage cargado una vez que haya terminado con él:
image.dispose()Problemas comunes y soluciones
RuntimeError: PsdImage has been disposed. al llamar save. La imagen ya estaba descartada (a través de dispose() o un with bloque que salió) antes de save se llamó. Llame save antes de descartar.
PsdSaveException sobre la longitud de una cadena Pascal. Un valor de cadena supera los 255 bytes — vea Manejo de excepciones de PSD Core and Troubleshooting.
No hay forma de forzar un contenedor PSD o PSB al guardar. No existe un API público para elegir el formato de contenedor de salida — una guardada siempre refleja el formato con el que se cargó el documento (is_large_document / is_psb) se cargó el documento. Si necesita un formato de contenedor diferente, no hay una ruta de conversión compatible en esta compilación FOSS.
Preguntas frecuentes
¿Guardar en un stream cierra el stream después?
No — cuando pasa un stream a save, el stream se deja abierto después para que usted controle su ciclo de vida (vea el Paso 4). Guardar en una ruta de archivo, en cambio, abre y cierra el archivo internamente.
¿Puedo llamar directamente al escritor interno de secciones en lugar de save?
No — el escritor a nivel de sección es un detalle de implementación interno invocado por PsdImage.save. No existe una forma documentada y soportada de escribir un documento fuera de llamar a save en una instancia de PsdImage.