Cómo cargar un documento PSD en Python
PsdImage.load es el único punto de entrada público para abrir un documento PSD/PSB — acepta ya sea una ruta de archivo o un flujo legible ya abierto. El lector de bajo nivel sección por sección al que delega internamente no es algo que llames 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 necesarias
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionPaso 3: Cargar desde una ruta de archivo
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()Paso 4: Cargar desde un flujo
Un flujo no necesita ser seekable — load lee todo su contenido en un búfer interno antes de analizar:
with open("input.psd", "rb") as stream:
image = PsdImage.load(stream)
print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()Problemas comunes y soluciones
FileNotFoundError: File not found: .... La ruta pasada a load no apunta a un archivo existente — load checks os.path.isfile antes de intentar abrirlo.
PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. El flujo de origen se quedó sin datos a mitad del análisis (un EOFError mientras se leía) — es probable que el archivo esté truncado.
PsdLoadException: Failed to read PSD/PSB data from the source stream. Se produjo un error de E/S al leer del propio flujo, envuelto y relanzado como un PsdLoadException.
ArgumentNullException al llamar a load. load fue llamado con None como el argumento de stream.
Preguntas frecuentes
¿Necesito buscar al inicio del stream antes de llamar a load?
No — si el stream es buscable, load restaura su posición original después de la lectura; si no es buscable, load sigue funcionando ya que almacena en búfer el contenido del stream internamente antes del análisis.
¿Cuál es la diferencia entre los dos fallas FileNotFoundError/PsdLoadException anteriores?
Una ruta de archivo faltante genera el error estándar FileNotFoundError antes de que comience cualquier análisis. Un PsdLoadException en cambio significa que se encontró y abrió un archivo (o stream), pero los datos PSD/PSB en sí están truncados, corruptos o de otro modo ilegibles una vez que comenzó el análisis — vea también Troubleshooting para los relacionados con la versión y los límites PsdLoadException variantes.