Cara Bekerja dengan Lapisan PSD di Python

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:$PYTHONPATH

Langkah 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 BlendMode

Langkah 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 = 60

Langkah 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.

Lihat Juga

 Bahasa Indonesia