Cara Bekerja dengan Lapisan PSD di .NET

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 build

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

Lihat Juga

 Bahasa Indonesia