Introducción

Aspose.PSD FOSS para Python carga, inspecciona y guarda documentos PSD y PSB mediante un pequeño conjunto de clases. Esta publicación examina partes del núcleo API que la publicación introductoria no cubrió en profundidad: cómo Image y PsdImage se relacionan entre sí, los tipos de valor de geometría utilizados en toda la biblioteca y cómo la biblioteca informa errores de carga y guardado.


Qué incluye

Imagen y PsdImage

Image es una clase base abstracta mínima: define solo load(), que inspecciona la entrada y devuelve una subclase concreta — para entrada PSD/PSB, esa subclase es PsdImage. La superficie completa del documento — color_mode, version, layers, compression, bits_per_channel, size y más — reside en PsdImage mismo, no en la base Image.

from aspose_psd_foss.image import Image
from aspose_psd_foss.psdimage import PsdImage

with Image.load("input.psd") as image:
    assert isinstance(image, PsdImage)
    print(f"ColorMode: {image.color_mode}, Version: {image.version}")
    print(f"Size: {image.size}, Layers: {image.layer_count}")

Tipos de Valor de Geometría

Point, Size, Rectangle y RectangleF son los tipos de valor utilizados para coordenadas y extensiones en todo el API — Layer.bounds es un Rectangle, y PsdImage.size es un Size. Rectangle posee métodos reales de geometría: contains(), intersect_rect(), union_rect(), inflate() y from_left_top_right_bottom(), entre otros.

from aspose_psd_foss.rectangle import Rectangle

layer_bounds = image.layers[0].bounds
fully_inside = layer_bounds.contains(Rectangle(0, 0, 10, 10))
overlap = Rectangle.intersect_rect(layer_bounds, Rectangle(0, 0, 100, 100))
print(f"Contains (0,0,10,10): {fully_inside}, overlap: {overlap}")

Bloques de recursos y excepciones

PsdImage.image_resources devuelve la lista analizada de objetos ResourceBlock — cada uno expone id, name, data_size y signature. En esta compilación FOSS, image_resources, global_layer_resources, active_layer y has_transparency_data pueden leerse pero no reasignarse — cada uno tiene un setter que lanza NotSupportedException si se llama, así que trátelos como de solo lectura aunque aparezcan como propiedades ordinarias.

Los errores de carga y guardado aparecen como dos tipos de excepción dedicados: PsdLoadException cuando un documento no puede ser analizado, y PsdSaveException cuando un documento no puede volver a escribirse.

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

try:
    with PsdImage.load("input.psd") as image:
        for resource in image.image_resources:
            print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")
except PsdLoadException as ex:
    print(f"Failed to load input.psd: {ex}")

Inicio rápido

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
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    with PsdImage.load("input.psd") as image:
        print(f"Size: {image.size}, ColorMode: {image.color_mode}")
        print(f"ImageResources: {image.resource_count}")
except PsdLoadException as ex:
    print(f"Load failed: {ex}")

Formatos compatibles

FormatoExtensiónLeerEscribir
PSDpsd✓✓
PSBpsb✓✓

Código abierto y licencias

Aspose.PSD FOSS para Python tiene licencia MIT y puede usarse en productos comerciales sin regalías, sin marca de agua de evaluación ni límite de uso.

La biblioteca no tiene dependencias nativas de terceros — solo se requiere la biblioteca estándar Python en tiempo de ejecución.


Primeros pasos

Recursos relacionados