পাইথনে ছবি প্রক্রিয়াকরণের জন্য লাইব্রেরি
পাইথনে ছবি প্রক্রিয়াকরণের জন্য পিলো (Pillow), পাইথন ইমেজিং লাইব্রেরি (PIL), সাইকিট-ইমেজ (scikit-image) বা ওপেনসিভি (OpenCV) gibi একাধিক লাইব্রেরি রয়েছে। এখানে আমরা পিলো লাইব্রেরি ব্যবহার করব কারণ এটি ছবি ম্যানিপুলেশনের জন্য মানক প্রক্রিয়া প্রদান করে এবং জেপিজি, পিএনজি, জিআইএফ, টিআইএফএফ, বিএমপি সহ বিভিন্ন ছবি ফাইল ফরম্যাট সমর্থন করে।
পিলো লাইব্রেরি পাইথন ইমেজিং লাইব্রেরি (PIL)-এর উপরে নির্মিত এবং এর родитель লাইব্রেরির চেয়ে আরও ফিচার প্রদান করে।
ইনস্টলেশন
পিপ (pip) ব্যবহার করে পিলো ইনস্টল করা যায়। কমান্ড টার্মিনালে নিচের কমান্ডটি চালান:
$ pip install pillow
পিলো দিয়ে মৌলিক অপারেশন
পিলো লাইব্রেরি ব্যবহার করে ছবির উপর কিছু মৌলিক অপারেশন করা যাক।
from PIL import Image image = Image.open(r"C:\Users\rajesh\Desktop\imagefolder\beach-parga.jpg") image.show() # সোর্স ফাইলের ফাইল ফরম্যাট # আউটপুট: JPEG print(image.format) # ছবিতে ব্যবহৃত পিক্সেল ফরম্যাট। সাধারণ মান: "1", "L", "RGB", বা "CMYK" # আউটপুট: RGB print(image.mode) # ছবির আকার, পিক্সেলে। আকারটি 2-টাপল (প্রস্থ, উচ্চতা) হিসেবে দেওয়া হয়। # আউটপুট: (2048, 1365) print(image.size) # রঙের প্যালেট টেবিল, যদি থাকে। # আউটপুট: None print(image.palette)
আউটপুট

JPEG RGB (2048, 1365) None
আকার অনুযায়ী ছবি ফিল্টার করা
নিচের প্রোগ্রামটি একটি নির্দিষ্ট পথ (ডিফল্ট পথ: বর্তমান ওয়ার্কিং ডিরেক্টরি) থেকে সমস্ত ছবির আকার কমিয়ে দেয়। প্রোগ্রামে max_height, max_width বা ছবির এক্সটেনশন পরিবর্তন করা যায়।
কোড
import os
from PIL import Image
max_height = 900
max_width = 900
extensions = ['JPG']
path = os.path.abspath(".")
def adjusted_size(width, height):
if width > max_width or height > max_height:
if width > height:
return max_width, int(max_width * height / width)
else:
return int(max_height * width / height), max_height
else:
return width, height
if __name__ == "__main__":
for img in os.listdir(path):
if os.path.isfile(os.path.join(path, img)):
img_text, img_ext = os.path.splitext(img)
img_ext = img_ext[1:].upper()
if img_ext in extensions:
print(img)
image = Image.open(os.path.join(path, img))
width, height = image.size
image = image.resize(adjusted_size(width, height))
image.save(os.path.join(path, img))
আউটপুট
another_Bike.jpg clock.JPG myBike.jpg Top-bike-wallpaper.jpg
উপরের স্ক্রিপ্টটি চালালে, বর্তমান ওয়ার্কিং ডিরেক্টরিতে (যেটি বর্তমানে পাইথন স্ক্রিপ্ট ফোল্ডার) الموجود ছবিগুলোর সর্বোচ্চ আকার ৯০০ পিক্সেল (প্রস্থ/উচ্চতা) হবে।