Introdução
Aspose.PSD FOSS para Python carrega, inspeciona e salva documentos PSD e PSB por meio de um pequeno conjunto de classes. Este post examina partes do núcleo API que o post introdutório não abordou em profundidade: como Image e PsdImage se relacionam, os tipos de valor de geometria usados em toda a biblioteca e como a biblioteca relata erros de carregamento e salvamento.
O que está incluído
Imagem e PsdImage
Image é uma classe base abstrata mínima: ela define apenas load(), que inspeciona a entrada e retorna uma subclasse concreta — para entrada PSD/PSB, essa subclasse é PsdImage. A superfície completa do documento — color_mode, version, layers, compression, bits_per_channel, size e mais — reside em PsdImage propriamente dito, não na 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 Geometria
Point, Size, Rectangle e RectangleF são os tipos de valor usados para coordenadas e extensões em todo o API — Layer.bounds é um Rectangle, e PsdImage.size é um Size. Rectangle contém métodos reais de geometria: contains(), intersect_rect(), union_rect(), inflate() e from_left_top_right_bottom(), entre outros.
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}")
Blocos de Recursos e Exceções
PsdImage.image_resources retorna a lista analisada de objetos ResourceBlock — cada um expõe id, name, data_size e signature. Nesta compilação FOSS, image_resources, global_layer_resources, active_layer e has_transparency_data podem ser lidos mas não reatribuídos — cada um tem um setter que lança NotSupportedException se chamado, portanto trate-os como somente leitura mesmo que apareçam como propriedades ordinárias.
Erros de carregamento e gravação surgem como dois tipos de exceção dedicados: PsdLoadException quando um documento não pode ser analisado, e PsdSaveException quando um documento não pode ser escrito novamente.
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}")
Início 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:$PYTHONPATHfrom 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 Compatíveis
| Formato | Extensão | Ler | Escrever |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Código Aberto & Licenciamento
Aspose.PSD FOSS para Python está licenciado sob MIT e pode ser usado em produtos comerciais sem royalties, sem marca d’água de avaliação ou limite de uso.
A biblioteca não tem dependências nativas de terceiros — apenas a biblioteca padrão Python é necessária em tempo de execução.