.NET'de PSD Katmanlarıyla Nasıl Çalışılır

.NET'de PSD Katmanlarıyla Nasıl Çalışılır

Bu kılavuz, bir belgenin katmanlarını listelemeyi, düzenlenebilir katman meta verilerini okumayı ve değiştirmeyi, bir katmanı yeniden konumlandırmayı ve katmanı koleksiyondan kaldırmayı gösterir. Yüklenmiş bir PsdImage‘ın Layers özelliği, onun Layer nesnelerinin koleksiyonunu döndürür. Her Layer, düzenlenebilir meta verileri — ad, görünürlük, opaklık, kırpma, harman modu ve konum (sınır kenarları) — ve yalnızca okunabilir genel sınırlar ve kanal bilgilerini ortaya çıkarır.

Adım Adım Kılavuz

Adım 1: Paketi Kurun

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

Adım 2: Gerekli Sınıfları İçe Aktarın

Daha sonra kullanılan LINQ uzantı metodları (Where) System.Linq‘den gelir; PSD’ye özgü tipler aşağıdaki iki Aspose.PSD ad alanından gelir.

using System.Linq;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Core.Blending;

Adım 3: Bir Belge Yükle ve Katmanlarını Listele

Belgeyi yükleyin, ardından Layers içinde döngü yaparak her katmanın adını ve geometrisini görün:

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})");
}

Adım 4: Katman Görünürlüğü, Opaklığı ve Karışım Modunu Oku ve Düzenle

IsVisible, Opacity (0-255), Clipping, Name ve BlendModeKey hepsi çalışan ayarlayıcılara sahiptir:

var layer = image.Layers[0];

layer.IsVisible = false;          // hide the layer
layer.Opacity = 200;              // ~78% opacity
layer.BlendModeKey = BlendMode.Multiply;
layer.Name = "Renamed Layer";

Adım 5: Katman Sınırlarını Oku ve Yeniden Konumlandır

Bounds, Width, Height ve ChannelsCount yalnızca okunabilir — ancak Top, Left, Bottom ve Right her biri katmanı yeniden konumlandıran çalışan bir ayarlayıcıya sahiptir:

Console.WriteLine($"Bounds: {layer.Bounds}");
Console.WriteLine($"Channels: {layer.ChannelsCount}");

layer.Left = 10;
layer.Top = 20;
layer.Right = 40;
layer.Bottom = 60;

Adım 6: Katmanlar Koleksiyonunu Değiştir

PsdImage.Layers kendisi çalışan bir ayarlayıcıya sahiptir, böylece tüm koleksiyonu değiştirebilirsiniz (örneğin, bir katmanı kaldırmak için):

image.Layers = image.Layers.Where(l => l.Name != "Renamed Layer").ToArray();

Adım 7: Belgeyi Kaydet

Önceki adımlarda yapılan her düzenlemeyi diske kaydedin:

image.Save("output.psd");

Yaygın Sorunlar ve Çözümler

NotSupportedException ayarlandığında ChannelInformation, LayerMaskData, ya da LayerBlendingRangesData. Bu üç Layer ayarlayıcılar bu FOSS yapısında desteklenmiyor — onları salt okunur olarak kabul edin.

Opacity değeri ayarlandıktan sonra yanlış görünüyor. Opacity bir byte (0-255), 0.0-1.0 kesir ya da yüzde değil — layer.Opacity = 200 yaklaşık %78 opak (200/255) anlamına gelir.

Bir katmandaki değişiklikler kaydettikten sonra görünmüyor. Değiştirdiğinizin Layer örnek alındığı image.Layers, ve çağırdığınızın image.Save düzenlemelerinizi yaptıktan sonra.

Sık Sorulan Sorular

Bir belgede bir katmanı kaldırabilir miyim?

Evet — PsdImage.Layers çalışan bir ayarlayıcıya sahiptir, bu yüzden katmanları kaldırmak için ona filtrelenmiş bir dizi atayabilirsiniz (Adım 6’ya bakın).

Mevcut karıştırma modları nelerdir?

BlendMode, Normal, Multiply, Screen, Overlay ve Darken gibi değerleri içerir, diğerleri arasında — Layer.BlendModeKey aracılığıyla ayarlanır.

Katman maskesi verileri mevcut mu?

Layer.LayerMaskData çalışan bir alıcıya sahiptir, ancak bu FOSS derlemesinde ayarlayıcısı NotSupportedException hatası fırlatır.

Ayrıca Bakınız

 Türkçe