कैसे काम करें PSD लेयर्स के साथ Python में

कैसे काम करें PSD लेयर्स के साथ Python में

यह गाइड दिखाता है कि कैसे किसी दस्तावेज़ की लेयर्स की सूची प्राप्त करें, संपादन योग्य लेयर मेटाडेटा पढ़ें और बदलें, लेयर को पुनः स्थान दें, और लेयर को संग्रह से हटाएँ। एक लोडेड PsdImage की layers प्रॉपर्टी उसके Layer ऑब्जेक्ट्स के संग्रह को लौटाती है। प्रत्येक Layer संपादन योग्य मेटाडेटा उजागर करता है — नाम, दृश्यता, अपारदर्शिता, क्लिपिंग, ब्लेंड मोड, और स्थिति (बाउंड्स एजेज़) — साथ ही केवल-पढ़ने योग्य कुल बाउंड्स और चैनल जानकारी।

स्टेप-बाय-स्टेप गाइड

Step 1: पैकेज इंस्टॉल करें

pip install aspose-psd-foss

Step 2: आवश्यक क्लासेस इम्पोर्ट करें

PsdImage दस्तावेज़ लोड करता है; BlendMode बाद में लेयर के ब्लेंड मोड को सेट करने के लिए उपयोग किया जाता है:

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode

चरण 3: एक दस्तावेज़ लोड करें और इसकी लेयर्स की सूची बनाएं

दस्तावेज़ लोड करें, फिर layers को इटररेट करें ताकि प्रत्येक लेयर का नाम और ज्यामिति देख सकें:

image = PsdImage.load("input.psd")

for layer in image.layers:
    print(f"{layer.name}: {layer.width}x{layer.height} at ({layer.left},{layer.top})")

चरण 4: लेयर की दृश्यता, अपारदर्शिता और ब्लेंड मोड पढ़ें तथा संपादित करें

is_visible, opacity (परम्परागत रूप से 0-255), clipping, name, और blend_mode_key सभी के पास कार्यशील सेटर्स हैं:

layer = image.layers[0]

layer.is_visible = False          # hide the layer
layer.opacity = 200               # ~78% opacity
layer.blend_mode_key = BlendMode.MULTIPLY
layer.name = "Renamed Layer"

चरण 5: लेयर की सीमाओं को पढ़ें और पुनः स्थित करें

bounds, width, height, और channels_count केवल-पढ़ने योग्य हैं — लेकिन top, left, bottom, और right के पास प्रत्येक में एक कार्यशील सेट्टर है जो लेयर को पुनः स्थानित करता है:

print(f"Bounds: {layer.bounds}")
print(f"Channels: {layer.channels_count}")

layer.left = 10
layer.top = 20
layer.right = 40
layer.bottom = 60

चरण 6: लेयर्स कलेक्शन को बदलें

PsdImage.layers के पास स्वयं एक कार्यशील सेट्टर है, इसलिए आप पूरी कलेक्शन को बदल सकते हैं (उदाहरण के लिए, एक लेयर हटाने के लिए):

image.layers = [l for l in image.layers if l.name != "Renamed Layer"]

चरण 7: दस्तावेज़ सहेजें

पिछले चरणों में किए गए हर संपादन को डिस्क पर सहेजें, फिर इमेज के संसाधनों को मुक्त करें:

image.save("output.psd")
image.dispose()

सामान्य समस्याएँ और समाधान

NotSupportedException सेट करते समय channel_information, layer_mask_data, या layer_blending_ranges_data. ये तीन Layer सेटर इस FOSS बिल्ड में समर्थित नहीं हैं — इन्हें केवल-पढ़ने योग्य मानें।

पारदर्शिता मान को सेट करने के बाद वह गलत दिखता है। opacity परंपरागत रूप से यह 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.blend_mode_key के माध्यम से सेट किया जाता है।

क्या लेयर मास्क डेटा उपलब्ध है?

Layer.layer_mask_data में एक कार्यशील गेटर है, लेकिन इस FOSS बिल्ड में इसका सेट्टर NotSupportedException उत्पन्न करता है।

यह भी देखें

 हिन्दी