Python में PSD दस्तावेज़ को कैसे सहेजें और निर्यात करें
यह गाइड दिखाता है कि संपादित दस्तावेज़ को फ़ाइल पथ पर, खुले स्ट्रीम पर कैसे सहेजा जाए, और बाद में लोड की गई छवि को कैसे नष्ट किया जाए। PsdImage.save दस्तावेज़ को वापस लिखने का एकल सार्वजनिक प्रवेश बिंदु है — यह या तो फ़ाइल पथ या पहले से खुला लिखने योग्य स्ट्रीम स्वीकार करता है। वास्तविक बाइट एन्कोडिंग करने वाला लो-लेवल सेक्शन राइटर एक आंतरिक कार्यान्वयन विवरण है, जिसे आप सीधे कॉल नहीं करते।
स्टेप-बाय-स्टेप गाइड
चरण 1: पैकेज स्थापित करें
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATHचरण 2: आवश्यक क्लासेस आयात करें
PsdImage वह एकमात्र क्लास है जिसकी इस गाइड के उदाहरणों को आवश्यकता है:
from aspose_psd_foss.psdimage import PsdImageचरण 3: फ़ाइल पथ पर सहेजें
एक दस्तावेज़ लोड करें, संपादन करें, फिर उसे फ़ाइल पथ पर वापस सहेजें:
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")चरण 4: खुले स्ट्रीम पर सहेजें
पथ के बजाय स्ट्रीम पास करने से सहेजने के बाद स्ट्रीम खुला रहता है — आप इसे कब बंद करना है, यह आप नियंत्रित करते हैं:
with open("output.psd", "wb") as stream:
image.save(stream)चरण 5: इमेज को डिस्पोज़ करें
लोड किए गए PsdImage द्वारा रखे गए संसाधनों को तब मुक्त करें जब आप उसका उपयोग समाप्त कर लें:
image.dispose()सामान्य समस्याएँ और समाधान
RuntimeError: PsdImage has been disposed. कॉल करने पर save. इमेज पहले ही डिस्पोज़ हो चुकी थी (के माध्यम से dispose() या एक with ब्लॉक जो समाप्त हो गया) पहले save कॉल किया गया था। कॉल करें save डिस्पोज़ करने से पहले।
PsdSaveException पास्कल स्ट्रिंग की लंबाई के बारे में। एक स्ट्रिंग वैल्यू 255 बाइट्स से अधिक है — देखें PSD कोर अपवादों को संभालना and Troubleshooting.
सेव पर PSD या PSB कंटेनर को मजबूर करने का कोई तरीका नहीं है। आउटपुट कंटेनर फ़ॉर्मेट चुनने के लिए कोई सार्वजनिक API नहीं है — एक सेव हमेशा उस फ़ॉर्मेट को प्रतिबिंबित करता है जिससे (is_large_document / is_psb) दस्तावेज़ लोड किया गया था। यदि आपको अलग कंटेनर फ़ॉर्मेट चाहिए, तो इस FOSS बिल्ड में कोई समर्थित रूपांतरण पथ नहीं है।
अक्सर पूछे जाने वाले प्रश्न
क्या स्ट्रीम में सहेजने के बाद स्ट्रीम बंद हो जाता है?
नहीं — जब आप एक स्ट्रीम को save को पास करते हैं, तो स्ट्रीम बाद में खुला रहता है ताकि आप उसकी जीवन-चक्र को नियंत्रित कर सकें (स्टेप 4 देखें)। इसके विपरीत, फ़ाइल पाथ में सहेजना फ़ाइल को आंतरिक रूप से खोलता और बंद करता है।
क्या मैं save के बजाय आंतरिक सेक्शन राइटर को सीधे कॉल कर सकता हूँ?
नहीं — सेक्शन-लेवल राइटर एक आंतरिक इम्प्लीमेंटेशन विवरण है जिसे PsdImage.save द्वारा बुलाया जाता है। PsdImage इंस्टेंस पर save को कॉल करने के अलावा दस्तावेज़ लिखने का कोई प्रलेखित, समर्थित तरीका नहीं है।