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 buildusing 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çim | Uzantı | Oku | Yaz |
|---|---|---|---|
| Photoshop Belgesi | psd | ✓ | ✓ |
| Photoshop Büyük Belgesi | psb | ✓ | ✓ |
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.