.NET में PSD लेयर्स के साथ कैसे काम करें
यह मार्गदर्शिका दिखाती है कि कैसे किसी दस्तावेज़ की लेयर्स की सूची बनाएं, संपादन योग्य लेयर मेटाडेटा पढ़ें और बदलें, लेयर को पुनः स्थित करें, और संग्रह से लेयर को हटाएं। एक लोडेड PsdImage की Layers प्रॉपर्टी उसके Layer ऑब्जेक्ट्स के संग्रह को लौटाती है। प्रत्येक Layer संपादन योग्य मेटाडेटा—नाम, दृश्यता, अपारदर्शिता, क्लिपिंग, ब्लेंड मोड, और स्थिति (सीमाओं के किनारे)—के साथ-साथ केवल-पढ़ने योग्य समग्र सीमाएं और चैनल जानकारी भी उजागर करता है।
चरण-दर-चरण मार्गदर्शिका
चरण 1: पैकेज स्थापित करें
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildचरण 2: आवश्यक क्लासेस आयात करें
बाद में उपयोग किए गए LINQ एक्स्टेंशन मेथड्स (Where) System.Linq से आते हैं; PSD-विशिष्ट प्रकार नीचे दिए गए दो Aspose.PSD नेमस्पेसेस से आते हैं।
using System.Linq;
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Core.Blending;चरण 3: एक दस्तावेज़ लोड करें और उसकी परतों की सूची बनाएं
दस्तावेज़ लोड करें, फिर Layers को दोहराएँ ताकि प्रत्येक परत का नाम और ज्यामिति देखें:
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})");
}चरण 4: परत की दृश्यता, अपारदर्शिता, और ब्लेंड मोड पढ़ें और संपादित करें
IsVisible, Opacity (0-255), Clipping, Name, और BlendModeKey सभी के पास काम करने वाले सेटर्स हैं:
var layer = image.Layers[0];
layer.IsVisible = false; // hide the layer
layer.Opacity = 200; // ~78% opacity
layer.BlendModeKey = BlendMode.Multiply;
layer.Name = "Renamed Layer";चरण 5: परत की सीमाओं को पढ़ें और पुनःस्थापित करें
Bounds, Width, Height, और ChannelsCount केवल-पढ़ने योग्य हैं — लेकिन Top, Left, Bottom, और Right प्रत्येक के पास एक काम करने वाला सेट्टर है जो परत को पुनःस्थापित करता है:
Console.WriteLine($"Bounds: {layer.Bounds}");
Console.WriteLine($"Channels: {layer.ChannelsCount}");
layer.Left = 10;
layer.Top = 20;
layer.Right = 40;
layer.Bottom = 60;चरण 6: परतों के संग्रह को बदलें
PsdImage.Layers स्वयं के पास एक काम करने वाला सेट्टर है, इसलिए आप पूरे संग्रह को बदल सकते हैं (उदाहरण के लिए, किसी परत को हटाने के लिए):
image.Layers = image.Layers.Where(l => l.Name != "Renamed Layer").ToArray();चरण 7: दस्तावेज़ को सहेजें
पिछले चरणों में किए गए हर संपादन को डिस्क पर सहेजें:
image.Save("output.psd");सामान्य समस्याएँ और समाधान
NotSupportedException सेट करने पर ChannelInformation, LayerMaskData, या LayerBlendingRangesData. ये तीन Layer सेटर्स इस FOSS बिल्ड में समर्थित नहीं हैं — इन्हें केवल पढ़ने योग्य मानें।
इसे सेट करने के बाद अपारदर्शिता मान गलत दिख रहा है। Opacity एक है byte (0-255), 0.0-1.0 अंश या प्रतिशत नहीं — layer.Opacity = 200 लगभग 78% अपारदर्शी दर्शाता है (200/255)।
परत में किए गए परिवर्तन सहेजने के बाद दिखाई नहीं देते। पुष्टि करें कि आप संशोधित कर रहे हैं Layer इंस्टेंस प्राप्त किया गया है image.Layers, और यह सुनिश्चित करें कि आप कॉल करते हैं image.Save अपने संपादन करने के बाद।
अक्सर पूछे जाने वाले प्रश्न
क्या मैं दस्तावेज़ से एक लेयर हटा सकता हूँ?
हाँ — PsdImage.Layers में एक कार्यशील सेट्टर है, इसलिए आप इसे फ़िल्टर किए गए एरे को असाइन करके लेयर्स हटा सकते हैं (स्टेप 6 देखें)।
कौन से ब्लेंड मोड उपलब्ध हैं?
BlendMode में Normal, Multiply, Screen, Overlay, और Darken जैसे मान शामिल हैं, अन्य के साथ — इसे Layer.BlendModeKey के माध्यम से सेट किया जाता है।
क्या लेयर मास्क डेटा उपलब्ध है?
Layer.LayerMaskData में एक कार्यशील गेटर है, लेकिन इस FOSS बिल्ड में इसका सेट्टर NotSupportedException फेंकता है।