Cum să lucrați cu Aspose.PSD FOSS Core API în Python

Cum să lucrați cu Aspose.PSD FOSS Core API în Python

Aspose.PSD FOSS pentru Python încarcă și inspectează structura documentului PSD/PSB prin PsdImage, o subclasă a Image. Acest articol acoperă încărcarea unui document, citirea antetului și a resurselor de imagini și salvarea acestuia înapoi pe disc.

Ghid pas cu pas

Pasul 1: Instalați pachetul

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

Pasul 2: Importați clasele necesare

PsdImage este punctul de intrare utilizat pe parcursul acestui ghid:

from aspose_psd_foss.psdimage import PsdImage

Pasul 3: Încarcă un document PSD/PSB

PsdImage.load() deschide un document dintr-o cale de fișier sau dintr-un flux:

from aspose_psd_foss.psdimage import PsdImage

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

Pasul 4: Inspectează antetul documentului

PsdImage expune câmpurile antetului citite din documentul analizat: width, height, bits_per_channel, color_mode (o valoare ColorModes), și compression (o valoare 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}")

Valorile ColorModes sunt BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE și LAB. Valorile CompressionMethod sunt RAW, RLE, ZIP_WITHOUT_PREDICTION și ZIP_WITH_PREDICTION.


Pasul 5: Citește blocurile de resurse imagine

image_resources returnează intrările ResourceBlock analizate ale documentului. Fiecare bloc expune id, name și size:

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

image_resources este doar în citire în această construcție FOSS — atribuirea la el declanșează NotSupportedException (vezi Limitările cunoscute în FAQ).


Pasul 6: Salvați documentul

Scrieți documentul înapoi pe disc, apoi eliberați resursele imaginii:

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

Probleme comune și remedii

PsdLoadException când se încarcă un fișier. Intrarea nu este un document PSD/PSB valid sau antetul său a eșuat la validare. Confirmați că fișierul este un fișier PSD/PSB autentic înainte de încărcare.

NotSupportedException când se setează image_resources or global_layer_resources. Aceste setări nu sunt suportate în această construcție FOSS. Tratați image_resources ca fiind doar în citire.

Întrebări frecvente

Pot încărca un fișier PSD dintr-un flux în loc de o cale de fișier?

Da — PsdImage.load() acceptă fie un șir de cale de fișier, fie un flux citibil (io.BytesIO/io.BufferedIOBase).

Include image_resources datele stratului?

Nu. image_resources conține blocuri de resurse la nivel de document (analizate din secțiunea de resurse de imagine PSD). Datele la nivel de strat sunt citite prin PsdImage.layers — vezi Lucrul cu straturile.

Este PsdImage.version versiunea formatului de fișier PSD?

Nu. PsdImage.version raportează un număr de versiune intern Aspose.PSD-compatibil API (în prezent 6) — nu are legătură cu faptul dacă fișierul încărcat este PSD sau PSB. Setter-ul său acceptă doar valoarea 6; orice altă valoare generează ValueError.

Vezi și:

 Română