Cara Bekerja dengan Lapisan PSD di .NET
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 campuran, dan posisi (tepi batas) — serta informasi batas keseluruhan dan saluran yang hanya-baca.
Panduan Langkah demi Langkah
Langkah 1: Instal Paket
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildLangkah 2: Impor Kelas yang Diperlukan
Metode ekstensi LINQ yang digunakan nanti (Where) berasal dari System.Linq; tipe khusus PSD berasal dari dua namespace Aspose.PSD di bawah ini.
using System.Linq;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Core.Blending;Langkah 3: Muat Dokumen dan Daftar Lapisan-nya
Muat dokumen, lalu iterasi Layers untuk melihat nama dan geometri setiap lapisan:
using var image = PsdImage.Load("input.psd");
foreach (var layer in image.Layers)
{
Console.WriteLine($"{layer.Name}: {layer.Width}x{layer.Height} at ({layer.Left},{layer.Top})");
}Langkah 4: Baca dan Edit Visibilitas Lapisan, Opasitas, dan Mode Campuran
IsVisible, Opacity (0-255), Clipping, Name, dan BlendModeKey semuanya memiliki setter yang berfungsi:
var layer = image.Layers[0];
layer.IsVisible = false; // hide the layer
layer.Opacity = 200; // ~78% opacity
layer.BlendModeKey = BlendMode.Multiply;
layer.Name = "Renamed Layer";Langkah 5: Baca dan Posisikan Ulang Batas Lapisan
Bounds, Width, Height, dan ChannelsCount hanya dapat dibaca — tetapi Top, Left, Bottom, dan Right masing-masing memiliki setter yang berfungsi untuk memposisikan ulang lapisan:
Console.WriteLine($"Bounds: {layer.Bounds}");
Console.WriteLine($"Channels: {layer.ChannelsCount}");
layer.Left = 10;
layer.Top = 20;
layer.Right = 40;
layer.Bottom = 60;Langkah 6: Ganti Koleksi Lapisan
PsdImage.Layers sendiri memiliki setter yang berfungsi, sehingga Anda dapat mengganti seluruh koleksi (misalnya, untuk menghapus sebuah lapisan):
image.Layers = image.Layers.Where(l => l.Name != "Renamed Layer").ToArray();Langkah 7: Simpan Dokumen
Simpan setiap edit yang dibuat pada langkah-langkah sebelumnya kembali ke disk:
image.Save("output.psd");Masalah Umum dan Solusinya
NotSupportedException saat mengatur ChannelInformation, LayerMaskData, atau LayerBlendingRangesData. Ketiga ini Layer setter tidak didukung dalam build FOSS ini — anggap mereka sebagai hanya-baca.
Nilai opacity tampak salah setelah mengaturnya. Opacity adalah sebuah byte (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. Pastikan Anda memodifikasi Layer instance yang diperoleh dari image.Layers, dan bahwa Anda memanggil image.Save setelah melakukan penyuntingan Anda.
Pertanyaan yang Sering Diajukan
Apakah saya dapat menghapus lapisan dari dokumen?
Ya — PsdImage.Layers memiliki setter yang berfungsi, jadi Anda dapat menetapkannya dengan array yang difilter untuk menghapus lapisan (lihat Langkah 6).
Mode perpaduan apa yang tersedia?
BlendMode mencakup nilai-nilai seperti Normal, Multiply, Screen, Overlay, dan Darken, di antara lainnya — diatur melalui Layer.BlendModeKey.
Apakah data layer mask tersedia?
Layer.LayerMaskData memiliki getter yang berfungsi, tetapi setter-nya melempar NotSupportedException dalam build FOSS ini.