Cara Memuat Dokumen PSD di Python
PsdImage.load adalah satu-satunya titik masuk publik untuk membuka dokumen PSD/PSB — ia menerima baik jalur file maupun aliran dapat-baca yang sudah terbuka. Pembaca tingkat rendah yang membaca per bagian yang didelegasikan secara internal bukanlah sesuatu yang Anda panggil secara langsung.
Panduan Langkah-demi-Langkah
Langkah 1: Instal Paket
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:$PYTHONPATHLangkah 2: Impor Kelas yang Diperlukan
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionLangkah 3: Muat dari Jalur File
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()Langkah 4: Muat dari Stream
Sebuah stream tidak perlu dapat mencari — load membaca seluruh isinya ke dalam buffer internal sebelum parsing:
with open("input.psd", "rb") as stream:
image = PsdImage.load(stream)
print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()Masalah Umum dan Solusinya
FileNotFoundError: File not found: .... Jalur yang diberikan ke load tidak mengarah ke file yang ada — load checks os.path.isfile sebelum mencoba membuka file tersebut.
PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Aliran sumber kehabisan data di tengah parsing (sebuah EOFError saat membaca) — file kemungkinan terpotong.
PsdLoadException: Failed to read PSD/PSB data from the source stream. Terjadi kesalahan I/O saat membaca dari aliran itu sendiri, dibungkus dan dilempar kembali sebagai sebuah PsdLoadException.
ArgumentNullException ketika memanggil load. load dipanggil dengan None sebagai argumen stream.
Pertanyaan yang Sering Diajukan
Apakah saya perlu mengembalikan posisi stream ke awalnya sebelum memanggil load?
Tidak — jika stream dapat di-seek, load mengembalikan posisi semula setelah dibaca; jika tidak dapat di-seek, load tetap berfungsi karena ia menyimpan isi stream secara internal sebelum parsing.
Apa perbedaan antara dua kegagalan FileNotFoundError/PsdLoadException di atas?
Path file yang hilang memicu standar FileNotFoundError sebelum parsing dimulai. A PsdLoadException sebaliknya berarti sebuah file (atau stream) ditemukan dan dibuka, tetapi data PSD/PSB itu sendiri terpotong, rusak, atau tidak dapat dibaca setelah parsing dimulai — lihat juga Troubleshooting untuk yang terkait versi dan batas PsdLoadException varian.