Cómo trabajar con el Aspose.PSD FOSS Core API en Python

Cómo trabajar con el Aspose.PSD FOSS Core API en Python

Aspose.PSD FOSS para Python carga e inspecciona la estructura del documento PSD/PSB a través de PsdImage, una subclase de Image. Este artículo cubre la carga de un documento, la lectura de su encabezado y recursos de imagen, y su guardado de nuevo en disco.

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:$PYTHONPATH

Paso 2: Importar las clases requeridas

PsdImage es el punto de entrada utilizado a lo largo de esta guía:

from aspose_psd_foss.psdimage import PsdImage

Paso 3: Cargar un documento PSD/PSB

PsdImage.load() abre un documento desde una ruta de archivo o un flujo:

from aspose_psd_foss.psdimage import PsdImage

image = PsdImage.load("input.psd")

Paso 4: Inspeccionar el encabezado del documento

PsdImage expone los campos de encabezado leídos del documento analizado: width, height, bits_per_channel, color_mode (un valor ColorModes), y compression (un 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}")

Los valores de ColorModes son BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE y LAB. Los valores de CompressionMethod son RAW, RLE, ZIP_WITHOUT_PREDICTION y ZIP_WITH_PREDICTION.


Paso 5: Leer bloques de recursos de imagen

image_resources devuelve las entradas ResourceBlock analizadas del documento. Cada bloque expone id, name y size:

for resource in image.image_resources:
    print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")

image_resources es de solo lectura en esta compilación FOSS — asignarle un valor genera NotSupportedException (ver Limitaciones Conocidas en el FAQ).


Paso 6: Guardar el Documento

Escriba el documento de nuevo en el disco, luego libere los recursos de la imagen:

image.save("output.psd")
image.dispose()

Problemas comunes y soluciones

PsdLoadException al cargar un archivo. La entrada no es un documento PSD/PSB válido, o su encabezado no pasó la validación. Confirme que el archivo es un verdadero archivo PSD/PSB antes de cargarlo.

NotSupportedException al establecer image_resources or global_layer_resources. Estos setters no son compatibles con esta compilación FOSS. Trate image_resources como de solo lectura.

Preguntas frecuentes

¿Puedo cargar un archivo PSD desde un flujo en lugar de una ruta de archivo?

Sí — PsdImage.load() acepta ya sea una cadena de ruta de archivo o un flujo legible (io.BytesIO/io.BufferedIOBase).

¿Incluye image_resources datos de capa?

No. image_resources contiene bloques de recursos a nivel de documento (analizados a partir de la sección de recursos de imagen PSD). Los datos a nivel de capa se leen a través de PsdImage.layers — ver Trabajando con capas.

¿Es PsdImage.version la versión del formato de archivo PSD?

No. PsdImage.version informa un número de versión interno compatible con Aspose.PSD API (actualmente 6) — no está relacionado con si el archivo cargado es PSD o PSB. Su asignador solo acepta el valor 6; cualquier otro valor genera ValueError.

Ver también

 Español