Εισαγωγή

PsdImage.Layers επιστρέφει κάθε στρώμα σε ένα έγγραφο PSD ή PSB ως έναν πίνακα Layer. Αυτό το άρθρο εστιάζει συγκεκριμένα σε ό,τι αποκαλύπτει ένα Layer: τη γεωμετρία και την οπτική του κατάσταση, τις απαριθμήσεις λειτουργίας ανάμειξης και σημαίας μάσκας, καθώς και τις κλάσεις μεταδεδομένων που περιγράφουν τα κανάλια, τη μάσκα και τις περιοχές ανάμειξης ενός στρώματος.


Τι Περιλαμβάνεται

Η Κλάση Στρώματος

Κάθε Layer διαθέτει ένα όνομα Pascal (Name), ένα περιοριστικό Rectangle (Bounds, με παράγωγα Width/Height/Top/Left/Bottom/Right), κατάσταση ορατότητας και σύνθεσης (IsVisible, Opacity, Clipping, BlendModeKey), και έναν αριθμό καναλιών (ChannelsCount). Τα Name, IsVisible, Opacity, Clipping, BlendModeKey, και τα τέσσερα άκρα ορίων μπορούν όλα να τροποποιηθούν και να γραφτούν πίσω με το PsdImage.Save().

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

Λειτουργίες Ανάμειξης και Σημαίες Μάσκας

BlendModeKey είναι μια τιμή enum BlendMode — η βιβλιοθήκη ορίζει όλες τις 29 τυπικές λειτουργίες ανάμειξης PSD (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity, και άλλες). Μια ξεχωριστή απαρίθμηση LayerMaskFlags (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) περιγράφει τη συμπεριφορά απόδοσης μάσκας όταν ένα στρώμα την έχει.

Μεταδεδομένα Καναλιού και Μάσκας

Layer.ChannelInformation επιστρέφει ένα ChannelInformation[] που περιγράφει το ID κάθε καναλιού, τη μέθοδο συμπίεσης και το μήκος σε byte. Layer.LayerMaskData (ένα αφηρημένο LayerMaskData, συγκεκριμένα ένα LayerMaskDataShort όταν υπάρχει) περιγράφει τα όρια και τις σημαίες μιας μάσκας στρώματος· Layer.LayerBlendingRangesData αποκαλύπτει το σύνθετο και ανά-κανάλι εύρος ανάμειξης. Και οι τρεις αυτές ιδιότητες είναι μόνο για ανάγνωση σε αυτή τη FOSS έκδοση — οι setters τους ρίχνουν NotSupportedException αν κληθούν, παρόλο που εμφανίζονται ως κανονικές ιδιότητες get/set.

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

Γρήγορη Εκκίνηση

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

Υποστηριζόμενες Μορφές

ΜορφήΕπέκτασηΑνάγνωσηΕγγραφή
Έγγραφο Photoshoppsd✓✓
Μεγάλο Έγγραφο Photoshoppsb✓✓

Ανοιχτός Κώδικας & Άδειες

Aspose.PSD FOSS για .NET είναι αδειοδοτημένο υπό την MIT και μπορεί να χρησιμοποιηθεί σε εμπορικά προϊόντα χωρίς δικαιώματα, χωρίς υδατογράφημα αξιολόγησης ή όριο χρήσης.

Το πακέτο βρίσκεται στην έκδοση 1.0.0 και απαιτεί μόνο το .NET 10.0 στο χρόνο εκτέλεσης — δεν έχει άλλες εξαρτήσεις τρίτων.


Ξεκινώντας

Σχετικοί Πόροι