Cum să încărcați un document PSD în Python
PsdImage.load este singurul punct de intrare public pentru deschiderea unui document PSD/PSB — acceptă fie o cale de fișier, fie un flux citibil deja deschis. Cititorul de nivel scăzut, secțiune cu secțiune, la care delegă intern, nu este ceva ce apelați direct.
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
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionPasul 3: Încărcați dintr-o cale de fișier
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()Pasul 4: Încărcare dintr-un flux
Un flux nu trebuie să fie căutabil — load citește tot conținutul său într-un buffer intern înainte de parsare:
with open("input.psd", "rb") as stream:
image = PsdImage.load(stream)
print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()Probleme comune și remedieri
FileNotFoundError: File not found: .... Calea transmisă către load nu indică un fișier existent — load checks os.path.isfile înainte de a încerca să îl deschizi.
PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Fluxul sursă a rămas fără date în timpul parsării (un EOFError în timpul citirii) — fișierul este probabil trunchiat.
PsdLoadException: Failed to read PSD/PSB data from the source stream. A apărut o eroare I/O în timpul citirii din fluxul însuși, învelită și ridicată din nou ca un PsdLoadException.
ArgumentNullException când se apelează load. load a fost apelat cu None ca argumentul fluxului.
Întrebări frecvente
Trebuie să repoziționez fluxul la început înainte de a apela load?
Nu — dacă fluxul este poziționabil, load îi restaurează poziția inițială după citire; dacă nu este poziționabil, load funcționează în continuare deoarece memorează conținutul fluxului intern înainte de parsare.
Care este diferența dintre cele două FileNotFoundError/PsdLoadException eșecuri de mai sus?
Un path de fișier lipsă ridică standardul FileNotFoundError înainte de a începe orice parsare. A PsdLoadException înseamnă în schimb că un fișier (sau flux) a fost găsit și deschis, dar datele PSD/PSB în sine sunt trunchiate, corupte sau altfel ilizibile odată ce parsarea a început — vezi de asemenea Troubleshooting pentru cele legate de versiune și de limită PsdLoadException variante.