পাইথনে ইমেজ প্রসেসিংয়ের সবচেয়ে জনপ্রিয় এবং ডিফল্ট লাইব্রেরি হল Pillow। Pillow হল Python Image Library (PIL)-এর আপডেটেড ভার্সন এবং সিম্পল থেকে অ্যাডভান্সড ইমেজ ম্যানিপুলেশন ফাংশনালিটি সমর্থন করে। এটি অন্য পাইথন লাইব্রেরি যেমন SciPy ও Matplotlib-এ সিম্পল ইমেজ সাপোর্টের ভিত্তি।
Pillow ইনস্টলেশন
শুরু করার আগে পাইথন ও Pillow প্রয়োজন। লিনাক্সে Pillow সাধারণত ইতিমধ্যে থাকে, কারণ Fedora, Debian/Ubuntu, ArchLinux-এ PIL-এর প্যাকেজগুলোতে Pillow অন্তর্ভুক্ত থাকে।
সবচেয়ে সহজ ইনস্টলেশন পিপ দিয়ে:
pip install pillow
ইমেজ লোড ও ডিসপ্লে করা
পাইথন Pillow লাইব্রেরির গুরুত্বপূর্ণ ফিচার Демো করার জন্য একটি টেস্ট ইমেজ লাগবে। আমি statue_of_unity ফটো ব্যবহার করেছি। ইমেজ ডাউনলোড করে করেন্ট ওয়ার্কিং ডিরেক্টরিতে সেভ করুন।
# Pillow দিয়ে ইমেজ লোড ও শো
from PIL import Image
# ইমেজ লোড
img = Image.open('statue_of_unity.jpg')
# ইমেজের বেসিক ডিটেইলস
print(img.format)
print(img.mode)
print(img.size)
# ইমেজ শো
img.show()
রেজাল্ট
JPEG RGB (400, 260)

উপরে Image ক্লাসের open() ফাংশন দিয়ে সরাসরি ইমেজ লোড করা হয়েছে। এটি একটি ইমেজ অবজেক্ট রিটার্ন করে যাতে পিক্সেল ডেটা ও ইমেজের ডিটেইলস থাকে।
format প্রপার্টি ইমেজ ফরম্যাট (png, jpeg), mode পিক্সেল চ্যানেল ফরম্যাট (CMYK বা RGB), size পিক্সেলে ডাইমেনশন (400x260) রিপোর্ট করে।
show() ফাংশন অপারেটিং সিস্টেমের ডিফল্ট অ্যাপ্লিকেশন দিয়ে ইমেজ ডিসপ্লে করে।
ইমেজকে গ্রेস্কেলে কনভার্ট করা
ইমেজকে গ্রেস্কেলে কনভার্ট করে ডিসপ্লে ও সেভ করা খুব সহজ:
from PIL import Image
# ইমেজ পড়ে গ্রেস্কেলে কনভার্ট
image = Image.open('statue_of_unity.jpg').convert('L')
# ডিসপ্লে
image.show()
# সেভ
image.save('statue_of_unity_gs.jpg')
রেজাল্ট

প্রোগ্রাম চালানোর পর কারেন্ট ওয়ার্কিং ডিরেক্টরিতে "statue_of_unity_gs.jpg" ফাইল তৈরি হবে।
অন্য ইমেজ টাইপে কনভার্ট করা
এক টাইপের ইমেজ (jpeg) অন্য টাইপে (png) কনভার্ট করা সহজ।
from PIL import Image
image = Image.open('statue_of_unity.jpg')
image.save('statue_of_unity.png')
ডিফল্ট ডিরেক্টরিতে নতুন ইমেজ ফাইল তৈরি ও সেভ হবে।
ইমেজ রিসাইজ করা
কারেন্ট ইমেজের সাইজ 400x260px। যদি 440x600px করতে চাই:
from PIL import Image
image = Image.open('statue_of_unity.jpg')
newImage = image.resize((440, 600))
newImage.save('statue_of_unity_440x600.jpg')

এটি অরিজিনাল ইমেজকে ডিজায়ারড ডাইমেনশনে বড় করে দিয়েছে, ক্রপ করা নয়।
ক্রপ করতে চাইলে:
image.crop(box=None)
ইমেজ রোটেট করা
নিচের প্রোগ্রাম ইমেজ লোড করে ৪৫ ডিগ্রি রোটেট করে এক্সটার্নাল ভিউয়ার দিয়ে ডিসপ্লে করে।
from PIL import Image
image = Image.open('statue_of_unity.jpg')
image.rotate(45).show()

থাম্বনেইল তৈরি করা
কারেন্ট ওয়ার্কিং ডিরেক্টরির সব jpeg ইমেজের 128x128 থাম্বনেইল তৈরি করার প্রোগ্রাম:
from PIL import Image
import glob, os
size = 128, 128
for infile in glob.glob("*.jpg"):
file, ext = os.path.splitext(infile)
image = Image.open(infile)
image.thumbnail(size, Image.ANTIALIAS)
image.save(file + ".thumbnail", "JPEG")

এটি কারেন্ট ডিরেক্টরির সব jpeg ফাইলের থাম্বনেইল রিটার্ন করবে (statue_of_unity.jpg সহ)।