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:$PYTHONPATHKrok 2: Zaimportuj wymagane klasy
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionKrok 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.