Cara Bekerja dengan Aspose.PSD FOSS Core API di Python
Aspose.PSD FOSS untuk Python memuat dan memeriksa struktur dokumen PSD/PSB melalui PsdImage, subclass dari Image. Artikel ini mencakup memuat dokumen, membaca header dan sumber gambar, serta menyimpannya kembali ke disk.
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
PsdImage adalah titik masuk yang digunakan sepanjang panduan ini:
from aspose_psd_foss.psdimage import PsdImageLangkah 3: Muat Dokumen PSD/PSB
PsdImage.load() membuka dokumen dari jalur file atau aliran:
from aspose_psd_foss.psdimage import PsdImage
image = PsdImage.load("input.psd")Langkah 4: Periksa Header Dokumen
PsdImage menampilkan bidang header yang dibaca dari dokumen yang diparsing: width, height, bits_per_channel, color_mode (nilai ColorModes), dan compression (nilai 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}")Nilai ColorModes adalah BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE, dan LAB. Nilai CompressionMethod adalah RAW, RLE, ZIP_WITHOUT_PREDICTION, dan ZIP_WITH_PREDICTION.
Langkah 5: Baca Blok Sumber Daya Gambar
image_resources mengembalikan entri ResourceBlock yang diparsing dari dokumen. Setiap blok menampilkan id, name, dan size:
for resource in image.image_resources:
print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")image_resources adalah read-only dalam build FOSS ini — memberikan nilai padanya akan memicu NotSupportedException (lihat Known Limitations dalam FAQ).
Langkah 6: Simpan Dokumen
Tulis kembali dokumen ke disk, lalu lepaskan sumber daya gambar:
image.save("output.psd")
image.dispose()Masalah Umum dan Solusinya
PsdLoadException saat memuat file. Masukan bukan dokumen PSD/PSB yang valid, atau header-nya gagal validasi. Pastikan file tersebut adalah file PSD/PSB yang asli sebelum memuatnya.
NotSupportedException saat menyetel image_resources or global_layer_resources. Setter ini tidak didukung dalam build FOSS ini. Perlakukan image_resources sebagai read-only.
Pertanyaan yang Sering Diajukan
Apakah saya dapat memuat file PSD dari aliran alih-alih jalur file?
Ya — PsdImage.load() menerima baik string jalur file maupun stream yang dapat dibaca (io.BytesIO/io.BufferedIOBase).
Apakah image_resources mencakup data lapisan?
Tidak. image_resources menyimpan blok sumber daya tingkat dokumen (diparsing dari bagian sumber daya gambar PSD). Data tingkat layer dibaca melalui PsdImage.layers — lihat Bekerja dengan Layer.
Apakah PsdImage.version merupakan versi format file PSD?
Tidak. PsdImage.version melaporkan nomor versi API internal yang kompatibel dengan Aspose.PSD (saat ini 6) — ini tidak terkait dengan apakah file yang dimuat adalah PSD atau PSB. Setter-nya hanya menerima nilai 6; nilai lain akan memicu ValueError.