Giriş

PsdImage.Layers, bir PSD veya PSB belgesindeki tüm katmanları Layer dizisi olarak döndürür. Bu gönderi özellikle bir Layer‘nin ortaya çıkardıklarına bakar: geometrisi ve görsel durumu, harman modu ve maske bayrağı sayımları, ve bir katmanın kanallarını, maskesini ve harman aralıklarını tanımlayan meta veri sınıfları.


Neler Dahil

Katman Sınıfı

Her Layer, bir Pascal adı (Name), bir sınırlayıcı Rectangle (Bounds, türetilmiş Width/Height/Top/Left/Bottom/Right ile), görünürlük ve birleştirme durumu (IsVisible, Opacity, Clipping, BlendModeKey), ve bir kanal sayısı (ChannelsCount) taşır. Name, IsVisible, Opacity, Clipping, BlendModeKey ve dört sınır kenarı, PsdImage.Save() ile değiştirilebilir ve geri yazılabilir.

using var image = (PsdImage)Image.Load(inputPath);

foreach (Layer layer in image.Layers)
{
    Console.WriteLine($"{layer.Name}: {layer.Bounds}, " +
                       $"Visible={layer.IsVisible}, Opacity={layer.Opacity}, " +
                       $"BlendMode={layer.BlendModeKey}");
}

Harman Modları ve Maske Bayrakları

BlendModeKey, bir BlendMode enum değeri — kütüphane tüm 29 standart PSD harman modunu tanımlar (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity ve diğerleri). Ayrı bir LayerMaskFlags enum (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) bir katmanın maske sahip olduğu durumdaki maske-işleme davranışını tanımlar.

Kanal ve Maske Meta Verileri

Layer.ChannelInformation her bir kanalın kimliği, sıkıştırma yöntemi ve bayt uzunluğunu açıklayan bir ChannelInformation[] döndürür. Layer.LayerMaskData (soyut bir LayerMaskData, mevcut olduğunda somut bir LayerMaskDataShort) bir katman maskesinin sınırlarını ve bayraklarını tanımlar; Layer.LayerBlendingRangesData birleşik ve kanal başına karıştırma aralıklarını ortaya çıkarır. Bu üç özellik de bu FOSS sürümünde yalnızca okuma amaçlıdır — ayarlayıcıları çağrıldığında NotSupportedException fırlatır, hatta normal get/set özellikleri gibi görünseler de.

Layer layer = image.Layers[0];
foreach (ChannelInformation channel in layer.ChannelInformation)
{
    Console.WriteLine($"Channel {channel.ChannelID}: {channel.CompressionMethod}, {channel.Length} bytes");
}

if (layer.LayerMaskData is { } mask)
{
    Console.WriteLine($"Mask bounds: {mask.MaskRectangle}, flags: {mask.Flags}");
}

Hızlı Başlangıç

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers;
using System.Linq;

using var image = (PsdImage)Image.Load("input.psd");

var visibleLayers = image.Layers.Where(layer => layer.IsVisible);
foreach (Layer layer in visibleLayers)
{
    Console.WriteLine($"{layer.Name}: Opacity={layer.Opacity}, BlendMode={layer.BlendModeKey}");
}

Desteklenen Biçimler

BiçimUzantıOkuYaz
Photoshop Belgesipsd✓✓
Photoshop Büyük Belgesipsb✓✓

Açık Kaynak ve Lisanslama

Aspose.PSD FOSS, .NET için MIT lisanslıdır ve telif ücreti alınmadan ticari ürünlerde kullanılabilir; değerlendirme filigranı veya kullanım sınırı yoktur.

Paket sürümü 1.0.0’dir ve çalışma zamanında yalnızca .NET 10.0 gerektirir — başka üçüncü taraf bağımlılığı yoktur.


Başlarken

İlgili Kaynaklar