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:$PYTHONPATHPasul 2: Importați clasele necesare
PsdImage este punctul de intrare utilizat pe parcursul acestui ghid:
from aspose_psd_foss.psdimage import PsdImagePasul 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.