Jak załadować dokument PSD w Python

Jak załadować dokument PSD w Python

PsdImage.load jest jedynym publicznym punktem wejścia do otwierania dokumentu PSD/PSB — przyjmuje albo ścieżkę do pliku, albo już otwarty strumień do odczytu. Niskopoziomowy czytnik sekcja po sekcji, do którego deleguje wewnętrznie, nie jest czymś, co wywołujesz bezpośrednio.

Przewodnik krok po kroku

Krok 1: Zainstaluj pakiet

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

Krok 2: Zaimportuj wymagane klasy

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

Krok 3: Wczytaj ze ścieżki pliku

image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()

Krok 4: Ładowanie ze strumienia

Strumień nie musi być przewijalny — load odczytuje jego pełną zawartość do wewnętrznego bufora przed parsowaniem:

with open("input.psd", "rb") as stream:
    image = PsdImage.load(stream)

print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()

Typowe problemy i rozwiązania

FileNotFoundError: File not found: .... Ścieżka przekazana do load nie wskazuje na istniejący plik — load checks os.path.isfile przed próbą otwarcia go.

PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Strumień źródłowy wyczerpał dane w trakcie parsowania (an EOFError podczas odczytu) — plik prawdopodobnie jest obcięty.

PsdLoadException: Failed to read PSD/PSB data from the source stream. Wystąpił błąd I/O podczas odczytu ze strumienia, opakowany i ponownie podniesiony jako a PsdLoadException.

ArgumentNullException przy wywoływaniu load. load zostało wywołane z None jako argument strumienia.

Najczęściej zadawane pytania

Czy muszę cofnąć strumień do jego początku przed wywołaniem load?

Nie — jeśli strumień jest przewijalny, load przywraca jego pierwotną pozycję po odczycie; jeśli nie jest przewijalny, load nadal działa, ponieważ buforuje zawartość strumienia wewnętrznie przed parsowaniem.

Jaka jest różnica między dwoma powyższymi błędami FileNotFoundError/PsdLoadException?

Brakująca ścieżka do pliku wywołuje standardowy FileNotFoundError zanim rozpocznie się jakiekolwiek przetwarzanie. A PsdLoadException oznacza, że plik (lub strumień) został znaleziony i otwarty, ale dane PSD/PSB są przycięte, uszkodzone lub w inny sposób nieczytelne po rozpoczęciu parsowania — zobacz także Troubleshooting dotyczące wersji i granic PsdLoadException warianty.

Zobacz także

 Polski