Cara Bekerja dengan Lapisan PSD di Python
Panduan ini menunjukkan cara mencantumkan lapisan dokumen, membaca dan mengubah metadata lapisan yang dapat diedit, memindahkan posisi lapisan, dan menghapus lapisan dari koleksi. Properti layers dari PsdImage yang dimuat mengembalikan koleksi objek Layer. Setiap Layer menampilkan metadata yang dapat diedit — nama, visibilitas, opasitas, clipping, mode perpaduan, dan posisi (tepi batas) — serta informasi batas keseluruhan dan kanal yang hanya dapat dibaca.
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 memuat dokumen; BlendMode digunakan kemudian untuk mengatur mode perpaduan lapisan:
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendModeLangkah 3: Muat Dokumen dan Daftar Lapisan-nya
Muat dokumen, lalu iterasi layers untuk melihat nama dan geometri setiap lapisan:
image = PsdImage.load("input.psd")
for layer in image.layers:
print(f"{layer.name}: {layer.width}x{layer.height} at ({layer.left},{layer.top})")Langkah 4: Baca dan Sunting Visibilitas, Opasitas, serta Mode Campur Lapisan
is_visible, opacity (biasanya 0-255), clipping, name, dan blend_mode_key semuanya dilengkapi dengan setter yang berfungsi:
layer = image.layers[0]
layer.is_visible = False # hide the layer
layer.opacity = 200 # ~78% opacity
layer.blend_mode_key = BlendMode.MULTIPLY
layer.name = "Renamed Layer"Langkah 5: Baca dan Posisikan Ulang Batas Lapisan
bounds, width, height, dan channels_count bersifat hanya-baca — namun top, left, bottom, dan right masing-masing dilengkapi dengan setter yang berfungsi untuk memposisikan ulang lapisan:
print(f"Bounds: {layer.bounds}")
print(f"Channels: {layer.channels_count}")
layer.left = 10
layer.top = 20
layer.right = 40
layer.bottom = 60Langkah 6: Ganti Koleksi Lapisan
PsdImage.layers sendiri dilengkapi dengan setter yang berfungsi, sehingga Anda dapat mengganti seluruh koleksi (misalnya, untuk menghapus sebuah lapisan):
image.layers = [l for l in image.layers if l.name != "Renamed Layer"]Langkah 7: Simpan Dokumen
Simpan semua perubahan yang dibuat pada langkah sebelumnya ke disk, kemudian bebaskan sumber daya gambar:
image.save("output.psd")
image.dispose()Masalah Umum dan Solusi
NotSupportedException saat mengatur channel_information, layer_mask_data, atau layer_blending_ranges_data. Ketiga ini Layer setter tidak didukung dalam build FOSS ini — anggap mereka read-only.
Nilai opacity tampak salah setelah mengaturnya. opacity secara konvensional merupakan nilai 0-255, bukan fraksi 0.0-1.0 atau persentase — layer.opacity = 200 berarti kira-kira 78% opak (200/255).
Perubahan pada lapisan tidak muncul setelah disimpan. Konfirmasikan bahwa Anda sedang memodifikasi Layer instance yang diperoleh dari image.layers, dan bahwa Anda memanggil image.save() setelah Anda melakukan penyuntingan.
Pertanyaan yang Sering Diajukan
Bisakah saya menghapus lapisan dari dokumen?
Ya — PsdImage.layers menyediakan setter yang dapat beroperasi, sehingga Anda dapat menetapkan daftar terfilter untuk menghapus lapisan (lihat Langkah 6).
Mode blend apa yang tersedia?
BlendMode mencakup nilai seperti NORMAL, MULTIPLY, SCREEN, OVERLAY, dan DARKEN, di antara lainnya — diatur melalui Layer.blend_mode_key.
Apakah data mask lapisan tersedia?
Layer.layer_mask_data memiliki getter yang berfungsi, namun setter-nya memicu NotSupportedException dalam build FOSS ini.