Layers

Layers

PsdImage.Layers हर parsed layer को एक Layer array के रूप में लौटाता है। प्रत्येक Layer अपनी geometry, visibility और compositing state, तथा उसके channels, mask, और blending ranges के बारे में metadata उजागर करता है।


लेयर मेटाडेटा पढ़ना

Name, Bounds (और व्युत्पन्न Width/Height/Top/Left/Bottom/Right), IsVisible, Opacity, Clipping, BlendModeKey, और ChannelsCount सभी को सीधे पढ़ा जा सकता है।

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

समर्थित मेटाडेटा संपादन

Name, IsVisible, Opacity, Clipping, BlendModeKey, और चार सीमा किनारे (Top/Left/Bottom/Right) को स्थान पर बदला जा सकता है और PsdImage.Save() के साथ वापस लिखा जा सकता है।

Layer layer = image.Layers[0];
layer.Name = $"{layer.Name} (edited)";
layer.IsVisible = !layer.IsVisible;
layer.Opacity = 128;
layer.BlendModeKey = BlendMode.Multiply;
image.Save(outputPath);

चैनल और मास्क मेटाडेटा

ChannelInformation, LayerMaskData, और LayerBlendingRangesData इस FOSS बिल्ड में केवल-पढ़ने योग्य हैं — उनके सेटर्स NotSupportedException फेंकते हैं।

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

लेयर्स को हटाना या पुनः क्रमित करना

PsdImage.Layers के पास एक सेट्टर और एक गेट्टर दोनों हैं: फ़िल्टर की गई या पुनः क्रमित एरे को असाइन करने से दस्तावेज़ की लेयर संग्रह बदल जाती है। एक नए Layer इंस्टेंस को बनाने का कोई सार्वजनिक तरीका नहीं है, इसलिए यह केवल पहले से मौजूद लेयर्स को हटाने या पुनः क्रमित करने का समर्थन करता है — शून्य से नई लेयर जोड़ने का नहीं।

// Keep only visible layers
image.Layers = image.Layers.Where(layer => layer.IsVisible).ToArray();
image.Save(outputPath);

टिप्स और सर्वोत्तम प्रथाएँ

  • स्थिति के आधार पर image.Layers में इंडेक्स करें; एरे क्रम दस्तावेज़ की अपनी लेयर क्रम से मेल खाता है।
  • BlendModeKey किसी भी BlendMode enum मान को स्वीकार करता है — दस्तावेज़ के घोषित कलर मोड के विरुद्ध कोई वैधता जाँच नहीं की जाती।
  • ChannelInformation, LayerMaskData, और LayerBlendingRangesData पढ़े जा सकते हैं लेकिन कभी पुनः असाइन नहीं किए जा सकते।
  • सभी संपादन के बाद PsdImage.Save() को एक बार कॉल करें; प्रत्येक कॉल पूरे दस्तावेज़ को लिखता है।

सामान्य समस्याएँ

समस्याकारणसमाधान
जब ChannelInformation, LayerMaskData, या LayerBlendingRangesData सेट कर रहे हों तो NotSupportedExceptionइन 3 गुणों को FOSS बिल्ड में केवल-पढ़ने योग्य माना गया है, जबकि इनके पास एक सेट्टर हैमान पढ़ें; इसे पुनः असाइन करने का प्रयास न करें
LayerMaskData एक लेयर के लिए null हैहर लेयर में मास्क उपखंड नहीं होताउपयोग करने से पहले null की जाँच करें (layer.LayerMaskData is { } mask)

FAQ

क्या मैं लेयर हटा सकता हूँ?

हाँ — image.Layers को एक फ़िल्टर किए गए एरे में पुनः असाइन करें। आप एक नई लेयर नहीं जोड़ सकते, क्योंकि Layer में कोई सार्वजनिक कन्स्ट्रक्टर नहीं है; केवल मौजूदा पार्स की गई लेयर को रखा, हटाया या पुनः क्रमित किया जा सकता है।

क्या मैं लेयर के चैनल या मास्क डेटा को बदल सकता हूँ?

नहीं। ChannelInformation, LayerMaskData, और LayerBlendingRangesData केवल-पढ़ने योग्य हैं — केवल Name, IsVisible, Opacity, Clipping, BlendModeKey, और बाउंड्स एजेज़ को बदला जा सकता है।


API Reference सारांश

क्लास/मेथडविवरण
PsdImage.Layersलेयर संग्रह को प्राप्त करता है या सेट करता है — केवल हटाने/पुन:क्रमित करने के लिए सेट किया जा सकता है
Layer.Name / IsVisible / Opacity / Clipping / BlendModeKey / Top / Left / Bottom / Rightसमर्थित लेयर मेटाडाटा संपादन
Layer.Bounds / Width / Height / ChannelsCountकेवल-पढ़ने योग्य लेयर ज्योमेट्री
Layer.ChannelInformation / LayerMaskData / LayerBlendingRangesDataकेवल-पढ़ने योग्य चैनल/मास्क/ब्लेंडिंग मेटाडेटा

यह भी देखें

 हिन्दी