Jak pracovat s vrstvami PSD v .NET

Jak pracovat s vrstvami PSD v .NET

Tento průvodce ukazuje, jak vypsat vrstvy dokumentu, číst a měnit editovatelná metadata vrstvy, přesunout vrstvu a odstranit vrstvu ze sbírky. Vlastnost Layers načteného PsdImage vrací jeho kolekci objektů Layer. Každý Layer poskytuje editovatelná metadata — název, viditelnost, krytí, oříznutí, režim prolnutí a pozici (okrajové hranice) — plus pouze pro čtení celkové hranice a informace o kanálech.

Návod krok za krokem

Krok 1: Nainstalujte balíček

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

Krok 2: Importujte požadované třídy

Rozšiřující metody LINQ použité později (Where) pocházejí z System.Linq; typy specifické pro PSD pocházejí ze dvou níže uvedených jmenných prostorů Aspose.PSD.

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

Krok 3: Načíst dokument a vypsat jeho vrstvy

Načtěte dokument a poté iterujte Layers, abyste viděli název a geometrii každé vrstvy:

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

Krok 4: Číst a upravovat viditelnost vrstvy, průhlednost a režim prolnutí

IsVisible, Opacity (0-255), Clipping, Name a BlendModeKey všechny mají funkční settery:

var layer = image.Layers[0];

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

Krok 5: Číst a přemístit ohraničení vrstvy

Bounds, Width, Height a ChannelsCount jsou jen pro čtení — ale Top, Left, Bottom a Right mají každý funkční setter, který přemístí vrstvu:

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

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

Krok 6: Nahradit kolekci vrstev

PsdImage.Layers samotný má funkční setter, takže můžete nahradit celou kolekci (například pro odebrání vrstvy):

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

Krok7: Uložit dokument

Uložte všechny úpravy provedené v předchozích krocích zpět na disk:

image.Save("output.psd");

Běžné problémy a opravy

NotSupportedException při nastavení ChannelInformation, LayerMaskData, nebo LayerBlendingRangesData. Tyto tři Layer nastavitelské funkce nejsou v této FOSS verzi podporovány — považujte je za jen pro čtení.

Hodnota opacity vypadá po nastavení špatně. Opacity je byte (0-255), nikoli zlomek 0.0-1.0 nebo procento — layer.Opacity = 200 znamená přibližně 78% neprůhlednosti (200/255).

Změny vrstvy se po uložení nezobrazí. Potvrďte, že upravujete Layer instanci získanou z image.Layers, a také že voláte image.Save po provedení úprav.

Často kladené otázky

Mohu odebrat vrstvu z dokumentu?

Ano — PsdImage.Layers má fungující setter, takže mu můžete přiřadit filtrované pole pro odebrání vrstev (viz krok 6).

Jaké režimy prolnutí jsou k dispozici?

BlendMode zahrnuje hodnoty jako Normal, Multiply, Screen, Overlay a Darken, mezi jinými — nastavuje se pomocí Layer.BlendModeKey.

Jsou data masky vrstvy k dispozici?

Layer.LayerMaskData má fungující getter, ale jeho setter vyhazuje NotSupportedException v této FOSS verzi.

Viz také:

 Čeština