Python Pillow मार्गदर्शिका | छवि प्रक्रिया मूलदेखि उन्नतसम्म

目次

1. परिचय

Python र Pillow को सारांश

Python धेरै प्रोग्रामर र डेटा वैज्ञानिकहरूद्वारा मनपराइने प्रोग्रामिङ भाषा हो, यसको सरल सिन्ट्याक्स र विविध लाइब्रेरीहरूले विभिन्न प्रयोजनहरूमा प्रयोग गरिन्छ। त्यसैबीच, छवि प्रशोधनमा विशेषीकृत Pillow(पहिलेको PIL: Python Imaging Library)Python को प्रतिनिधि छवि प्रशोधन लाइब्रेरीको रूपमा व्यापक रूपमा प्रयोग हुन्छ। Pillow JPEG, PNG, GIF जस्ता विभिन्न छवि ढाँचाहरूलाई समर्थन गर्दछ, र रिसाइज, ट्रिम, फिल्टरिङ, पाठ थप्ने आदि विस्तृत छवि कार्यहरू सम्भव बनाउँछ। धेरै अनुप्रयोगहरू र परियोजनाहरूमा, छवि लोड, बचत, सम्पादन आवश्यक पर्दा प्रयोग गरिन्छ।

यस लेखको उद्देश्य

यस लेखमा, Python को Pillow लाइब्रेरी प्रयोग गरेर आधारभूत छवि प्रशोधनदेखि उन्नत कार्यहरू सम्म विस्तृत रूपमा व्याख्या गर्नेछौं। विशेष रूपमा, छवि लोड र बचत जस्ता आधारभूत कार्यहरूदेखि, छवि रिसाइज, घुमाउने, फिल्टर प्रक्रिया, साथै पाठ रेखांकन र छवि संयोजन जस्ता विभिन्न कार्यहरू प्रस्तुत गर्नेछौं। यसलाई पढेर, Pillow को प्रयोगलाई पूर्ण रूपमा मास्टर गर्न, वास्तविक परियोजनामा प्रयोग गर्न सकिने ज्ञान र कौशल प्राप्त गर्न सक्नुहुनेछ।

2. Pillow को इन्स्टल गर्ने तरिका

2.1 Python वातावरणमा Pillow इन्स्टल गर्ने तरिका

Pillow प्रयोग गर्नको लागि, पहिलो पटक Python वातावरणमा लाइब्रेरी इन्स्टल गर्न आवश्यक छ। इन्स्टल गर्ने तरिका धेरै सरल छ, तलको कमाण्ड टर्मिनल(Windows मा कमाण्ड प्रम्प्ट)मा टाइप गर्नु मात्र पर्याप्त छ।
pip install Pillow
pip Python प्याकेजहरू व्यवस्थापन गर्ने उपकरण हो, यो कमाण्ड चलाएपछि Pillow लाइब्रेरी स्वचालित रूपमा इन्स्टल हुन्छ। इन्स्टल सफल भएमा, तस्बिरहरूलाई ह्यान्डल गर्न सकिन्छ।

2.2 कार्य पुष्टि गर्ने तरिका

Pillow को इन्स्टल पूरा भएपछि, सरल कोड चलाएर सहीसँग काम गरिरहेको छ कि छैन जाँचौं। तलको कोडलाई Python स्क्रिप्ट फाइलमा लेखी, चलाएर हेर्नुहोस्।
from PIL import Image

# Pillow को कार्य पुष्टि कोड
img = Image.new('RGB', (100, 100), color = 'red')
img.save('test_image.png')
यो कोडले 100×100 पिक्सेलको रातो तस्बिर बनाउँछ र “test_image.png” नाममा बचत गर्छ। यदि यो तस्बिर फाइल सहीसँग बन्यो भने, Pillow सही रूपमा इन्स्टल भएको र काम गरिरहेको छ भन्ने पुष्टि हुन्छ।

2.3 सामान्य इन्स्टल समस्याहरू र समाधानहरू

कहिलेकाहीँ Pillow को इन्स्टल गर्दा समस्या आउन सक्छ। तल सामान्य समस्याहरू र तिनका समाधानहरू छन्।
  1. Python को संस्करण पुरानो भएमा Pillow ले Python 3.x र त्यसपछिका संस्करणहरूलाई समर्थन गर्छ। यदि पुरानो Python संस्करण प्रयोग गरिरहनु भएको छ भने, Pillow सही रूपमा इन्स्टल नहुन सक्छ। python --version प्रयोग गरी संस्करण जाँच्नुहोस्, र आवश्यक परे नयाँ संस्करणमा अपडेट गर्नुहोस्।
  2. निर्भरतापूर्ण प्याकेजको समस्या Pillow इन्स्टल गर्दा आवश्यक निर्भरतापूर्ण प्याकेजहरू अभाव हुन सक्छ। यस्तो अवस्थामा, त्रुटि सन्देश अनुसार अभाव भएका प्याकेजहरूलाई अलग‑अलग इन्स्टल गर्न वा तल देखाइएका जस्तै निर्भरतापूर्ण प्याकेजहरूलाई स्वचालित रूपमा इन्स्टल गर्ने विकल्प थप्न सकिन्छ।
   pip install Pillow --upgrade
  1. पर्यावरण चलको सेटिङ विशेष गरी Windows मा Pillow सही रूपमा काम नगरेको अवस्थामा, Python वा Pip को पथ पर्यावरण चलमा ठीकसँग सेट नभएको कारण हुन सक्छ। यसलाई जाँचेर सही पथ सेट भएको छ कि छैन पुष्टि गर्नुहोस्।
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

3. छवि लोड गर्ने र प्रदर्शन

3.1 Python द्वारा छवि फाइल लोड गर्ने तरिका

छवि लोड गर्ने प्रक्रिया Pillow लाइब्रेरी प्रयोग गरेर छवि प्रशोधनको आधारभूत चरण हो। पहिलो चरणमा, निर्दिष्ट फाइल लोड गर्ने तरिका प्रस्तुत गरिन्छ। Pillow मा, Image.open() मेथड प्रयोग गरेर छवि खोल्न सकिन्छ। तल छवि लोड गर्नको लागि आधारभूत कोड छ।
from PIL import Image

# छवि फाइल लोड गर्ने
img = Image.open('sample.jpg')

# छवि जानकारी प्रदर्शन गर्ने
print(img.format)  # फाइल ढाँचा (उदाहरण: JPEG, PNG)
print(img.size)    # आकार (चौडाइ, उचाइ)
print(img.mode)    # रंग मोड (उदाहरण: RGB, L)
यो कोडले Image.open() प्रयोग गरेर छवि फाइल खोल्छ, र त्यसको ढाँचा, आकार, रंग मोड आदि जानकारी प्राप्त गर्छ। फाइलको पथ निर्दिष्ट गरेर सजिलै छवि लोड गर्न सकिन्छ, जसले अत्यन्त उपयोगी बनाउँछ।

3.2 छवि प्रदर्शन गर्ने

छवि लोड गरेपछि, त्यसलाई प्रदर्शन गर्न show() मेथड प्रयोग गरिन्छ। यो मेथडले लोड गरिएको छवि प्रणालीको डिफल्ट भ्युअरमा प्रदर्शन गर्न प्रयोग हुन्छ। तलको कोडमा, छवि प्रदर्शन गर्ने तरिका हेर्नुहोस्।
from PIL import Image

# छवि फाइल लोड गर्ने
img = Image.open('sample.jpg')

# छवि प्रदर्शन गर्ने
img.show()
यो कोडले निर्दिष्ट छवि फाइललाई डिफल्ट छवि भ्युअरमा प्रदर्शन गर्छ। यसले छविको सामग्री जाँच्दै, पछि प्रक्रिया गर्न सम्भव बनाउँछ।

3.3 छवि विस्तृत जानकारी प्राप्त गर्ने

Pillow मा, छविको विभिन्न जानकारी प्राप्त गर्न सकिन्छ। उदाहरणका लागि, छविको चौडाइ र उचाइलाई size एट्रिब्युटबाट जाँच्न सकिन्छ, र रंग मोडलाई mode एट्रिब्युटबाट जाँच्न सकिन्छ। तलको जस्तै, छविको चौडाइ, उचाइ, फाइल ढाँचा सजिलै प्राप्त गर्न सकिन्छ।
from PIL import Image

# छवि फाइल लोड गर्ने
img = Image.open('sample.jpg')

# छवि विस्तृत जानकारी प्रदर्शन गर्ने
print(f'छविको आकार: {img.size}')   # (चौडाइ, उचाइ)
print(f'फाइल ढाँचा: {img.format}') # छवि ढाँचा (JPEG, PNG आदि)
print(f'रंग मोड: {img.mode}')       # रंग मोड (RGB, L आदि)
यसले लोड गरिएको छविको आधारभूत जानकारी प्राप्त गरी, पछि प्रक्रिया मा प्रयोग गर्न सकिन्छ। उदाहरणका लागि, छविको चौडाइ र उचाइ प्राप्त गरी, त्यसको आकार अनुसार रिसाइज वा ट्रिमिङ गर्दा धेरै उपयोगी हुन्छ।

3.4 Pillow द्वारा समर्थन गरिएका छवि ढाँचाहरू

Pillow ले तलका धेरै छवि ढाँचाहरूलाई समर्थन गर्दछ।
  • JPEG
  • PNG
  • GIF
  • BMP
  • TIFF
त्यसैले, अधिकांश सामान्य छवि ढाँचाहरूलाई Pillow द्वारा लोड र सञ्चालन गर्न सकिन्छ। उदाहरणका लागि, वेब अनुप्रयोगमा प्रयोगकर्ताबाट अपलोड गरिएको छवि प्रक्रिया गर्दा, ढाँचाको बारेमा चिन्ता नगरी विभिन्न ढाँचाहरूलाई समर्थन गर्न सकिन्छ, जसले लचिलो बनाउँछ।

4. मूलभूत छवि प्रक्रिया

4.1 छवि आकार परिवर्तन

छवि प्रक्रियाका मूलभूत कार्यहरू मध्ये एक छवि आकार परिवर्तन हो। आकार परिवर्तनले छविको रिजोल्युसन परिवर्तन गर्न प्रयोग गरिन्छ, र वेब साइट वा अनुप्रयोगमा उपयुक्त आकार मिलाउन उपयोगी हुन्छ। Pillow मा, resize() मेथड प्रयोग गरेर सजिलै छविको आकार परिवर्तन गर्न सकिन्छ। तल छवि आकार परिवर्तन गर्नको लागि कोड उदाहरण छ।
from PIL import Image

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# छविको रिसाइज (चौडाइ 400px, उचाइ 300px)
resized_img = img.resize((400, 300))

# रिसाइज गरिएको छविलाई बचत गर्नुहोस्
resized_img.save('resized_sample.jpg')
यो कोडले छवि लोड गरी, त्यसको आकारलाई (400, 300) मा परिवर्तन गर्दछ। आकार परिवर्तन पछि, फाइलको रूपमा बचत हुन्छ। यसले आवश्यक अनुसारको आकारमा छवि आउटपुट गर्न सम्भव बनाउँछ।

4.2 छवि ट्रिमिङ

ट्रिमिङ भनेको छविको केही भाग काट्ने प्रक्रिया हो। उदाहरणका लागि, छविमा विशेष क्षेत्र मात्र निकालेर प्रयोग गर्न चाहनुहुन्छ भने उपयोगी हुन्छ। Pillow मा, crop() मेथड प्रयोग गरेर छविको निर्दिष्ट दायरा काट्न सकिन्छ। तल ट्रिमिङको कोड उदाहरण छ।
from PIL import Image

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# छविलाई ट्रिमिङ (बायाँ माथिको निर्देशांक 100, 100 देखि दायाँ तलको निर्देशांक 300, 300 सम्म)
cropped_img = img.crop((100, 100, 300, 300))

# ट्रिम गरिएको छविलाई बचत गर्नुहोस्
cropped_img.save('cropped_sample.jpg')
यो कोडले crop() मेथड प्रयोग गरेर छविको विशेष दायरा निर्दिष्ट गरी, त्यस भाग मात्र काटेर बचत गर्दछ।

4.3 छवि घुमाउने

छविको घुमाउने कार्य केवल घुमाउने कोण निर्दिष्ट गरेर सजिलै गर्न सकिन्छ। Pillow को rotate() मेथड प्रयोग गर्दा, निर्दिष्ट कोण अनुसार छविलाई घुमाउन सकिन्छ। घुमाएपछि छवि केही भाग कट्न सक्छ, त्यस अवस्थामा expand=True विकल्प प्रयोग गरेर सम्पूर्ण छवि देखिने गरी विस्तार गर्न सकिन्छ। तल छविलाई 45 डिग्री घुमाउने कोड उदाहरण छ।
from PIL import Image

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# छविलाई 45 डिग्री घुमाउनुहोस् (आकार विस्तार गरेर काटिन नदिन)
rotated_img = img.rotate(45, expand=True)

# घुमाइएको छविलाई बचत गर्नुहोस्
rotated_img.save('rotated_sample.jpg')
यो कोडले छविलाई 45 डिग्री घुमाउँछ, र expand=True निर्दिष्ट गर्दा, घुमाएपछि पनि सम्पूर्ण छवि बचत हुन्छ।

4.4 छवि उल्टाउने

छविलाई बायाँ-दायाँ वा माथि-तल उल्टाउन पनि Pillow मा सजिलै गर्न सकिन्छ। उदाहरणका लागि, क्षैतिज उल्टाउने (बायाँ-दायाँ उल्टाउने) वा उभियो उल्टाउने (माथि-तल उल्टाउने) transpose() मेथड प्रयोग गरेर गरिन्छ। तल छविलाई बायाँ-दायाँ उल्टाउने कोड उदाहरण छ।
from PIL import Image

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# छविलाई बायाँ-दायाँ उल्टाउनुहोस्
flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT)

# उल्टाइएको छविलाई बचत गर्नुहोस्
flipped_img.save('flipped_sample.jpg')
यो कोडले निर्दिष्ट छविलाई बायाँ-दायाँ उल्टाएर बचत गर्दछ।

4.5 Pillow द्वारा समर्थित अन्य मूलभूत प्रक्रिया

Pillow मा, आकार परिवर्तन, ट्रिमिङ, घुमाउने र उल्टाउने मात्र नभई विभिन्न छवि प्रक्रियाहरूलाई समर्थन गर्दछ। उदाहरणका लागि, छविको उज्यालोपन वा कन्क्रास्ट समायोजन, रंग स्थानको रूपान्तरण आदि पनि सजिलै गर्न सकिन्छ। यसले जटिल छवि सम्पादनलाई पनि प्रोग्रामद्वारा स्वचालित बनाउन सम्भव बनाउँछ।

5. छवि ढाँचा रूपान्तरण र बचत

5.1 छवि ढाँचाको रूपान्तरण

Pillow प्रयोग गर्दा, छविको ढाँचा सजिलै रूपान्तरण गर्न सकिन्छ। उदाहरणका लागि, JPEG ढाँचाको छविलाई PNG ढाँचामा रूपान्तरण गर्न सम्भव छ। ढाँचा रूपान्तरण गर्न, छवि फाइललाई पढेर, save() मेथडमा नयाँ ढाँचा निर्दिष्ट गर्नु मात्र पर्याप्त हुन्छ। तल JPEG छविलाई PNG ढाँचामा रूपान्तरण गर्ने उदाहरण छ।
from PIL import Image

# JPEG छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# PNG ढाँचामा बचत गर्नुहोस्
img.save('converted_image.png', 'PNG')
यो कोडले, sample.jpg नामक JPEG ढाँचाको छवि पढ्छ, र converted_image.png नामक PNG ढाँचाको फाइलमा बचत गर्छ। यसरी, विभिन्न छवि ढाँचाहरू बीचको रूपान्तरण अत्यन्तै सजिलै गर्न सकिन्छ।

5.2 छविको बचत विधि

Pillow द्वारा छवि प्रक्रिया गरेपछि, त्यसलाई बचत गर्दा विभिन्न विकल्पहरू उपलब्ध छन्। उदाहरणका लागि, JPEG ढाँचामा बचत गर्दा, छविको गुणस्तर, अनुकूलन, प्रोग्रेसिभ JPEG जस्ता सेटिङहरू अनुकूलन गर्न सकिन्छ। तल JPEG छविलाई बचत गर्दा गुणस्तर र अनुकूलन विकल्प निर्दिष्ट गर्ने उदाहरण छ।
from PIL import Image

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# JPEG ढाँचामा बचत (गुणस्तर 95, अनुकूलन सहित)
img.save('optimized_image.jpg', 'JPEG', quality=95, optimize=True)
यो कोडले, quality=95 द्वारा छविको गुणस्तर निर्दिष्ट गर्छ, र optimize=True द्वारा छविलाई अनुकूलन गरी बचत गर्छ। गुणस्तरको मान 0‑100 को दायरा भित्र निर्दिष्ट गर्न सकिन्छ, र संख्याले ठूलो भए जति उच्च गुणस्तरमा बचत हुन्छ, तर फाइल आकार पनि ठूलो हुन्छ। साथै, optimize=True निर्दिष्ट गर्दा, Pillow फाइल आकारलाई सकेसम्म सानो बनाउन अनुकूलन गर्दछ।

5.3 प्रोग्रेसिभ JPEG को बचत

प्रोग्रेसिभ JPEG इन्टरनेटमा क्रमिक रूपमा छवि देखाइने ढाँचा हो। पृष्ठ पूर्ण रूपमा लोड हुनु अघि, कम रिजोल्युसनबाट उच्च रिजोल्युसनमा क्रमिक रूपमा देखाइँदा प्रयोगकर्ता अनुभव सुधार्न मद्दत गर्छ। Pillow मा प्रोग्रेसिभ JPEG बचत गर्न, progressive=True विकल्प निर्दिष्ट गर्नुहोस्।
from PIL import Image

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# प्रोग्रेसिभ JPEG मा बचत गर्नुहोस्
img.save('progressive_image.jpg', 'JPEG', quality=85, progressive=True)
यो कोडले, progressive=True निर्दिष्ट गरेर JPEG छविलाई बचत गर्दा, प्रोग्रेसिभ JPEG को रूपमा आउटपुट हुन्छ। यसले वेब पृष्ठ लोड हुँदै गर्दा छवि क्रमिक रूपमा देखिन मद्दत गर्छ।

5.4 EXIF जानकारीको संरक्षण

EXIF (Exchangeable Image File Format) डिजिटल क्यामेरा आदि द्वारा खिचिएका छविहरूमा एम्बेड गरिने मेटाडाटा हो। उदाहरणका लागि, खिच्ने मिति‑समय, क्यामेराको सेटिङ, GPS जानकारी आदि समावेश हुन्छ। Pillow मा EXIF जानकारीलाई कायम राख्दै छविलाई बचत गर्न सकिन्छ। तल EXIF जानकारीलाई कायम राख्दै छविलाई बचत गर्ने उदाहरण छ।
from PIL import Image

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# EXIF जानकारी प्राप्त गर्नुहोस्
exif_data = img.info.get('exif')

# EXIF जानकारी राखेर JPEG ढाँचामा बचत गर्नुहोस्
img.save('exif_image.jpg', 'JPEG', exif=expt_data)

6. छविहरूमा फिल्टर र प्रभाव लागू गर्ने

6.1 छविको उज्यालो र कन्ट्रास्ट समायोजन

Pillow प्रयोग गरेर, छविको उज्यालो र कन्ट्रास्ट सजिलै समायोजन गर्न सकिन्छ। यसका लागि, ImageEnhance मोड्युल उपयोगी छ। ImageEnhance.Brightness()ImageEnhance.Contrast() प्रयोग गरेर, छविको दृश्य प्रभावहरू समायोजन गर्न सकिन्छ। नीचे उज्यालो समायोजनको कोड उदाहरण छ।
from PIL import Image, ImageEnhance

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# उज्यालो समायोजन (1.5 गुणा उज्यालो बनाउने)
enhancer = ImageEnhance.Brightness(img)
bright_img = enhancer.enhance(1.5)

# समायोजन पछि छवि बचत गर्नुहोस्
bright_img.save('bright_sample.jpg')
यो कोडमा, enhance(1.5) प्रयोग गरेर छविलाई 1.5 गुणा उज्यालो बनाइन्छ। enhance() को आर्गुमेन्टले उज्यालोको गुणक निर्दिष्ट गर्न सक्छ, 1.0 मूल उज्यालो हो, 1.0 भन्दा कमले अँध्यारो बनाउँछ, 1.0 भन्दा बढीले उज्यालो बनाउँछ। त्यस्तै गरी, कन्ट्रास्टको समायोजन पनि तलको जस्तै गर्न सकिन्छ।
from PIL import Image, ImageEnhance

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# कन्ट्रास्ट समायोजन (2.0 गुणा बलियो बनाउने)
enhancer = ImageEnhance.Contrast(img)
contrast_img = enhancer.enhance(2.0)

# समायोजन पछि छवि बचत गर्नुहोस्
contrast_img.save('contrast_sample.jpg')
यो कोडमा, कन्ट्रास्टलाई 2 गुणा बलियो बनाइन्छ। कन्ट्रास्टलाई बलियो बनाउँदा, छविको उज्यालो-अँध्यारो अझ स्पष्ट हुन्छ, र स्पष्ट प्रभाव दिन्छ।

6.2 ब्लर र शार्पन जस्ता फिल्टरहरू

Pillow मा, छविमा फिल्टर लागू गर्न पनि सम्भव छ। उदाहरणका लागि, छविलाई ब्लर गर्ने, शार्प बनाउने जस्ता प्रभावहरू सजिलै थप्न सकिन्छ। यसका लागि ImageFilter मोड्युल प्रयोग गरिन्छ। नीचे ब्लर फिल्टर लागू गर्ने कोड उदाहरण छ।
from PIL import Image, ImageFilter

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# ब्लर फिल्टर लागू गर्नुहोस्
blurred_img = img.filter(ImageFilter.BLUR)

# फिल्टर लागू पछि छवि बचत गर्नुहोस्
blurred_img.save('blurred_sample.jpg')
यो कोडमा, ImageFilter.BLUR प्रयोग गरेर छविलाई ब्लर गरिन्छ। त्यस्तै गरी, शार्प फिल्टर लागू गर्न चाहनुहुन्छ भने ImageFilter.SHARPEN प्रयोग गर्नुहोस्।
# शार्प फिल्टर लागू गर्नुहोस्
sharpened_img = img.filter(ImageFilter.SHARPEN)

# फिल्टर लागू पछि छवि बचत गर्नुहोस्
sharpened_img.save('sharpened_sample.jpg')
यसरी, छविको किनारा बलियो बनाइ शार्प गर्न वा नरम प्रभावको लागि ब्लर फिल्टर प्रयोग गर्न सकिन्छ।

6.3 विशेष फिल्टरहरूको प्रयोग

थप रूपमा, Pillow मा केही विशेष फिल्टरहरू पनि उपलब्ध छन्। उदाहरणका लागि, किनारा पत्ता लगाउने वा रूपरेखा निकाल्ने जस्ता, छवि विश्लेषण गर्दा उपयोगी फिल्टरहरू पनि छन्। नीचे किनारा पत्ता लगाउने फिल्टर लागू गर्ने कोड उदाहरण छ।
from PIL import Image, ImageFilter

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# किनारा पत्ता लगाउने फिल्टर लागू गर्नुहोस्
edge_img = img.filter(ImageFilter.FIND_EDGES)

# फिल्टर लागू पछि छवि बचत गर्नुहोस्
edge_img.save('edge_sample.jpg')
यो कोडमा, ImageFilter.FIND_EDGES प्रयोग गरेर, छविको किनारा भाग मात्र बलियो बनाएको छवि बनाइन्छ। यस प्रकारको फिल्टर छवि विश्लेषण र डिजाइनमा उपयोगी हुन्छ।

7. पाठ्य र आकृतिहरूको रेखाचित्र

7.1 Pillow प्रयोग गरेर पाठ्य रेखाचित्र गर्ने तरिका

छविमा पाठ्य थप्नु भनेको Pillow प्रयोग गरेर छवि प्रशोधनको महत्त्वपूर्ण कार्यहरूमध्ये एक हो। विज्ञापन ब्यानर, थम्बनेल, लोगो छवि आदि विभिन्न डिजाइन तत्वहरूमा पाठ्य राख्न सकिन्छ। Pillow कोImageDraw मोड्युल प्रयोग गरेर, छविमा स्वतन्त्र रूपमा पाठ्य रेखाचित्र गर्न सकिन्छ। पहिले, आधारभूत पाठ्य रेखाचित्र गर्ने तरिका हेरौं।
from PIL import Image, ImageDraw, ImageFont

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# ImageDraw वस्तु सिर्जना गर्नुहोस्
draw = ImageDraw.Draw(img)

# पाठ्य रेखाचित्र गर्नुहोस्
draw.text((10, 10), 'Hello, Pillow!', fill=(255, 255, 255))

# छवि बचत गर्नुहोस्
img.save('text_sample.jpg')
यो कोडमा, ImageDraw.Draw() द्वारा रेखाचित्रको वस्तु बनाइन्छ, र draw.text() मेथडले निर्दिष्ट स्थानमा पाठ्य “Hello, Pillow!” रेखाचित्र गर्छ। fill विकल्प प्रयोग गरेर, पाठ्यको रंगलाई सेतो (RGB: (255, 255, 255))मा सेट गरिएको छ।

7.2 फन्टको निर्दिष्टिकरण

डिफल्ट रूपमा, Pillow प्रणालीको मानक फन्ट प्रयोग गर्छ, तर ImageFont मोड्युल प्रयोग गरेर कस्टम फन्ट वा आकार निर्दिष्ट गर्न सम्भव छ। तलको कोडले निर्दिष्ट फन्ट र फन्ट आकारसँग पाठ्य रेखाचित्र गर्ने तरिका देखाउँछ।
from PIL import Image, ImageDraw, ImageFont

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# ImageDraw वस्तु सिर्जना गर्नुहोस्
draw = ImageDraw.Draw(img)

# फन्ट निर्दिष्ट गर्नुहोस् (TrueType फन्ट निर्दिष्ट गर्नुहोस्)
font = ImageFont.truetype('arial.ttf', 40)

# पाठ्य रेखाचित्र गर्नुहोस्
draw.text((10, 10), 'Custom Font!', font=font, fill=(255, 255, 255))

# छवि बचत गर्नुहोस्
img.save('font_sample.jpg')
यो कोडमा, ImageFont.truetype() द्वारा निर्दिष्ट फन्ट फाइल (arial.ttf) र फन्ट आकार (40) प्रयोग गरेर पाठ्य रेखाचित्र गरिएको छ। फन्ट फाइल प्रणालीमा स्थापित भएको वा म्यानुअली थपिएको फाइल हुन सक्छ।

7.3 आकृतिहरूको रेखाचित्र

Pillow मा, पाठ्य मात्र नभई, सीधा रेखा, आयत, वृत्त आदि आकृतिहरू पनि सजिलै रेखाचित्र गर्न सकिन्छ। यसका लागि ImageDraw मोड्युलको line(), rectangle(), ellipse() मेथडहरू प्रयोग गरिन्छ। तल छविमा आकृति रेखाचित्र गर्ने कोड उदाहरणです。
from PIL import Image, ImageDraw

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# ImageDraw वस्तु सिर्जना गर्नुहोस्
draw = ImageDraw.Draw(img)

# रेखा रेखाचित्र गर्नुहोस्
draw.line((0, 0, 100, 100), fill=(255, 0, 0), width=5)

# आयत रेखाचित्र गर्नुहोस्
draw.rectangle((50, 50, 150, 150), outline=(0, 255, 0), width=3)

# वृत्त (अण्डाकार) रेखाचित्र गर्नुहोस्
draw.ellipse((200, 200, 300, 300), outline=(0, 0, 255), width=3)

# छवि बचत गर्नुहोस्
img.save('shape_sample.jpg')
यो कोडमा, रातो रेखा, हरियो आयत, निलो वृत्तलाई छविमा रेखाचित्र गरिएको छ। line() मेथडले निर्देशांक निर्दिष्ट गरेर रेखा बनाउँछ, rectangle() मेथडले आयत, ellipse() मेथडले वृत्त वा अण्डाकार रेखाचित्र गर्छ। outline विकल्पले आकृतिको बाहिरी किनाराको रंग, width विकल्पले रेखाको मोटाइ निर्दिष्ट गर्छ।

7.4 जटिल रेखाचित्रको प्रयोग

Pillow मा, धेरै आकृति र पाठ्यलाई संयोजन गरेर जटिल डिजाइन बनाउन सम्भव छ। उदाहरणका लागि, थम्बनेल छविमा शीर्षक वा विवरण थप्न, ब्यानर विज्ञापनमा धेरै पाठ्य वा आकृति राख्न सकिन्छ। यसले वेब साइट वा अनुप्रयोगमा दृश्य सामग्रीको अनुकूलनलाई धेरै सहज बनाउँछ।

8. अनुप्रयोग भाग: छवि संयोजन र मास्क प्रक्रिया

8.1 छवि संयोजन

छवि संयोजन भनेको धेरै छविहरूलाई मिलाएर एउटा छवि बनाउने प्रक्रिया हो। उदाहरणका लागि, पृष्ठभूमि छविको माथि अर्को छवि राखेर ब्यानर वा कोलाज बनाउन सकिन्छ। Pillow मा, paste() मेथड प्रयोग गरेर छविलाई सजिलै संयोजन गर्न सकिन्छ। तल छवि संयोजनको आधारभूत कोड उदाहरण छ।
from PIL import Image

# पृष्ठभूमि छवि र संयोजन गर्ने छवि लोड गर्नुहोस्
background = Image.open('background.jpg')
overlay = Image.open('overlay.png')

# छविलाई संयोजन गर्नुहोस् (स्थिति x=100, y=100)
background.paste(overlay, (100, 100), overlay)

# संयोजन गरिएको छवि बचत गर्नुहोस्
background.save('combined_image.jpg')
यो कोडमा, background.jpg को माथि, overlay.png लाई निर्देशांक (100, 100) मा टाँसिएको छ। paste() मेथडको तेस्रो आर्गुमेन्टमा overlay छवि पास गरेर, अल्फा च्यानल (पारदर्शिता) लाई विचार गरी संयोजन सम्भव हुन्छ। यसले पारदर्शी PNG आदि टाँस्दा पनि पृष्ठभूमिसँग स्वाभाविक एकीकरण सम्भव बनाउँछ।

8.2 मास्क छवि प्रयोग गरेर काट्ने

मास्क छवि प्रयोग गरेर, विशेष आकारमा छविलाई काट्न सकिन्छ। उदाहरणका लागि, वृत्त वा तारा जस्ता जटिल आकारमा छविलाई काटेर देखाउन सकिन्छ। यसका लागि, Pillow को paste() मेथड र मास्क छवि सँगै प्रयोग गरिन्छ। तल मास्क छवि प्रयोग गरेर वृत्ताकारमा काट्ने कोड उदाहरण छ।
from PIL import Image, ImageDraw

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg')

# मास्क छवि बनाउनुहोस् (वृत्ताकार मास्क)
mask = Image.new('L', img.size, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((100, 100, 300, 300), fill=255)

# मास्क लागू गरी छवि टाँस्नुहोस्
result = Image.new('RGB', img.size)
result.paste(img, (0, 0), mask)

# परिणाम बचत गर्नुहोस्
result.save('masked_image.jpg')
यो कोडमा, Image.new() द्वारा मास्क छवि बनाइन्छ र त्यसमा वृत्त आकृति रेखाचित्र गरिन्छ। मास्क छविको सेतो भाग देखिने क्षेत्र हो, कालो भाग पारदर्शी रूपमा मानिन्छ। त्यसपछि, paste() मेथडले मास्क लागू गरी मूल छविलाई टाँसिन्छ। यसले मूल छविलाई वृत्ताकारमा काटेर बचत गर्न सम्भव बनाउँछ।

8.3 अल्फा च्यानल प्रयोग गरेर पारदर्शी छवि निर्माण

अल्फा च्यानल प्रयोग गरेर, आंशिक रूपमा पारदर्शी छवि बनाउन सकिन्छ। Pillow मा, putalpha() मेथड प्रयोग गरेर छविमा अल्फा च्यानल थप्न र पारदर्शितालाई समायोजन गर्न सकिन्छ। तल अल्फा च्यानल थपेर पारदर्शी PNG छवि बनाउने उदाहरण छ।
from PIL import Image

# छवि लोड गर्नुहोस्
img = Image.open('sample.jpg').convert('RGBA')

# अल्फा च्यानल थप्नुहोस्
alpha = img.split()[3]
alpha = alpha.point(lambda p: p * 0.5)  # पारदर्शिता 50%
img.putalpha(alpha)

# पारदर्शी छवि बचत गर्नुहोस्
img.save('transparent_image.png')
यो कोडमा, split() मेथड प्रयोग गरेर छविबाट अल्फा च्यानल निकालिन्छ र त्यसको पारदर्शिता ५०% मा परिवर्तन गरिन्छ। त्यसपछि, putalpha() मेथडले छविमा अल्फा च्यानल पुनः थपेर, पारदर्शी PNG को रूपमा बचत गरिन्छ।

8.4 अनुप्रयोग प्रविधिहरूले के गर्न सक्छन्

यी अनुप्रयोग प्रविधिहरू प्रयोग गरेर, छवि सम्पादन र संयोजनलाई स्वचालित गर्न, वेब डिजाइन वा विज्ञापन ब्यानरलाई प्रभावकारी रूपमा बनाउन सम्भव हुन्छ। विशेष गरी, पारदर्शितालाई उपयोग गरेर लोगो ओभरले गर्ने, वा विशेष भागलाई मात्र जोड्ने छवि बनाउने जस्ता विविध प्रयोगहरू सम्भव छन्। Pillow को लचिलो छवि प्रक्रिया क्षमताहरू प्रयोग गरेर, परियोजनाको अनुसार रचनात्मक दृश्य सामग्री सजिलै उत्पन्न गर्न सकिन्छ।

9. सारांश

यस लेखमा, Python को इमेज प्रोसेसिंग लाइब्रेरी 「Pillow」 प्रयोग गरेर विभिन्न इमेज प्रोसेसिंग प्रविधिहरूलाई विस्तृत रूपमा व्याख्या गरिएको छ। Pillow प्रयोग गर्दा, इमेज लोड गर्ने, बचत गर्ने, रिसाइज़ वा ट्रिम गर्ने जस्ता आधारभूत कार्यहरूदेखि, संयोजन, फिल्टर लागू गर्ने, पाठ वा आकारहरू रेखाचित्र गर्ने सम्म, विस्तृत इमेज अपरेसनहरूलाई अत्यन्तै सजिलै गर्न सकिन्छ।

9.1 Pillow को आधारभूत अपरेसनको पुनरावलोकन

सबैभन्दा पहिले, Pillow को इन्स्टलबाट सुरु गरेर, इमेज खोल्ने र प्रदर्शन गर्ने तरिका तथा इमेजको आधारभूत जानकारी प्राप्त गर्ने तरिका सिक्यौं। यसले इमेज प्रोसेसिंगको मूलभूत बुझ्न मद्दत गर्यो, र सबै इमेजहरूमा लचिलो रूपमा कार्य गर्न सक्ने बनायो।

9.2 रिसाइज़, ट्रिमिंग, घुमाउने जस्ता आधारभूत इमेज सम्पादन

रिसाइज़, ट्रिमिंग, घुमाउने आदि इमेज सम्पादनका आधारभूत प्रविधिहरू हुन्। यी कार्यहरू प्रयोग गरेर, इमेजको आकार वा रूपलाई स्वतन्त्र रूपमा परिवर्तन गर्न, आवश्यक भाग मात्र काट्न, वा दिशा समायोजन गर्न सकिन्छ। यी कार्यहरू वेब डिजाइन तथा एप्लिकेशन विकासमा पनि अत्यन्त उपयोगी छन्।

9.3 फिल्टर र इफेक्टको प्रयोग

Pillow प्रयोग गर्दा, इमेजको उज्यालो वा कन्क्रास्ट समायोजन, ब्लर, शार्पन, एज डिटेक्शन जस्ता फिल्टरहरू सजिलै लागू गर्न सकिन्छ। यसले इमेजको बनावट वा प्रभावलाई ठूलो परिवर्तन गर्न मद्दत गर्छ, र पेशेवर इमेज सम्पादन सम्भव बनाउँछ।

9.4 पाठ र आकारको रेखाचित्र, इमेजको संयोजन

थप रूपमा, पाठ वा आकारको रेखाचित्र, तथा बहु इमेजहरूलाई संयोजन गरेर, अझ उन्नत डिजाइन सम्भव हुन्छ। उदाहरणका लागि, ब्यानर वा लोगो निर्माण, ट्रान्सपेरेंट PNG इमेज बनाउने आदि, प्रयोगको दायरा विस्तार हुन्छ। विशेष गरी, मास्क प्रोसेसिङ वा अल्फा च्यानल प्रयोग गरेर ट्रान्सपेरेंट इमेज बनाउने कार्य वेब वा एप्लिकेशन डिजाइनमा अत्यन्त उपयोगी छ।

9.5 भविष्यको प्रयोगको लागि

Pillow को कार्यक्षमता अझै गहिरो छ, र आधिकारिक दस्तावेज वा अन्य स्रोतहरू प्रयोग गरेर थप प्रयोग सम्भव हुन्छ। वेब एप्लिकेशनमा स्वचालित इमेज प्रोसेसिंग, डेटा विज्ञान परियोजनामा इमेज विश्लेषण, तथा मेसिन लर्निङमा इमेज डेटा पूर्वप्रक्रिया जस्ता विभिन्न परिस्थितिहरूमा Pillow महत्वपूर्ण उपकरण बनिन्छ। यो ज्ञानलाई प्रयोग गरेर, भविष्यमा आफ्नो प्रोजेक्टमा Pillow लाई स्वतन्त्र रूपमा प्रयोग गरी, प्रभावकारी इमेज प्रोसेसिंग गर्न सकिनेछ।