বালিশ হল অপরিহার্য পাইথন ইমেজিং লাইব্রেরি
বালিশ হল পাইথন ইমেজিং লাইব্রেরির (পিআইএল) আধুনিক, সক্রিয়ভাবে রক্ষণাবেক্ষণ করা কাঁটা। এর প্রাথমিক কাজ হল পাইথন স্ক্রিপ্টের মধ্যে সরাসরি শক্তিশালী, দক্ষ ইমেজ প্রসেসিং ক্ষমতা প্রদান করা। আপনি বহিরাগত সম্পাদকদের উপর নির্ভর না করে কয়েক ডজন চিত্র বিন্যাস খুলতে, পরিচালনা করতে, ফিল্টার করতে, উন্নত করতে এবং সংরক্ষণ করতে পারেন। যেমন, 100টি JPEG ছবিকে PNG তে রূপান্তর করতে এবং 50% এ আকার পরিবর্তন করতে 2 সেকেন্ডেরও কম সময় লাগে অপ্টিমাইজড বালিশ অপারেশন সহ।
আপনার যদি ব্যাচ অপারেশন করতে হয়, ওয়াটারমার্ক যোগ করতে হয়, মেটাডেটা বের করতে হয়, বা প্রোগ্রাম্যাটিকভাবে থাম্বনেইল তৈরি করতে হয়, বালিশ হল সরাসরি উত্তর। পাইথন-ভিত্তিক ইমেজ প্রসেসিং অটোমেশন কাজগুলির 70% এরও বেশি তাদের মূল লাইব্রেরি হিসাবে বালিশ ব্যবহার করে , PyPI ডাউনলোড পরিসংখ্যান অনুযায়ী।
পিলোকে কার্যকরভাবে ব্যবহার করতে, আপনাকে অবশ্যই এর মূল কর্মপ্রবাহটি বুঝতে হবে: খুলুন → প্রক্রিয়া → সংরক্ষণ করুন। নীচে বাস্তব কোড উদাহরণ সহ একটি ব্যবহারিক বাস্তবায়ন।
চালান পিপ ইনস্টল বালিশ . দিয়ে যাচাই করুন python -c "পিআইএল ইমপোর্ট ইমেজ থেকে; প্রিন্ট(ছবি।__সংস্করণ__)" . সাধারণ ইনস্টলেশন 30 সেকেন্ডের কম সময় নেয় একটি আদর্শ ব্রডব্যান্ড সংযোগে।
img = Image.open("input.jpg").convert("RGB") - সামঞ্জস্যের জন্য অপরিহার্য। img.thumbnail((800, 800)) - অনুপাত বজায় রাখে, কোন বিকৃতি নেই। os.listdir("ফোল্ডার") এ ফাইলের জন্য: img.save("output.png", অপ্টিমাইজ=সত্য, গুণমান=85) - ফাইলের আকার 40% পর্যন্ত হ্রাস করে দৃশ্যমান মানের ক্ষতি ছাড়া। নিম্নলিখিত স্ক্রিপ্ট একটি ডিরেক্টরিতে সমস্ত JPEG প্রক্রিয়া করে, মেটাডেটা সংরক্ষণ করার সময় 256x256 পিক্সেলের থাম্বনেইল তৈরি করে। এটি অনুক্রমিক অ-অপ্টিমাইজড লুপের তুলনায় মোট প্রক্রিয়াকরণের সময় 65% কমিয়ে দেয় ইন-প্লেস অপারেশন ব্যবহার করে।
পিআইএল ইম্পোর্ট ইমেজ থেকেওএস আমদানি করুনos.listdir("অরিজিনাল") এ ফাইলের নামের জন্য: যদি filename.endswith(."jpg"): img = Image.open(os.path.join("অরিজিনাল", ফাইলের নাম)) img.thumbnail((256, 256)) img.save(f"thumbnails/{filename}", "JPEG", quality=85) print(f"Thumbnail created: {filename}") বালিশ 8টি প্রধান বিভাগ জুড়ে 50টির বেশি বিল্ট-ইন ফাংশন প্রদান করে। নীচে একটি কাঠামোগত সারণী রয়েছে যা এর প্রাথমিক ফাংশন, সাধারণ ব্যবহারের ক্ষেত্রে এবং বাস্তব-বিশ্বের পারফরম্যান্স মেট্রিক্স দেখায়।
| ফাংশন বিভাগ | মূল পদ্ধতি | সাধারণ ব্যবহার | গড় সময় (ms) |
|---|---|---|---|
| ফর্ম্যাট রূপান্তর | সংরক্ষণ করুন(, বিন্যাস=) | PNG ↔ JPEG ↔ BMP | 12-35 |
| জ্যামিতিক রূপান্তর | .resize(), .rotate(), .crop() | থাম্বনেল, প্রান্তিককরণ | 8-45 |
| রঙ অপারেশন | .convert(), .point() | গ্রেস্কেল, উজ্জ্বলতা | 3-10 |
| ফিল্টারিং এবং বর্ধিতকরণ | ইমেজ ফিল্টার, ইমেজ এনহ্যান্স | ঝাপসা, তীক্ষ্ণ, বৈসাদৃশ্য | 15-60 |
| অঙ্কন এবং পাঠ্য | ImageDraw.Draw() | ওয়াটারমার্ক, টীকা | 20-80 |
বালিশ নেটিভ পাইথন সমাধানের তুলনায় ইমেজ প্রসেসিং কোডের দৈর্ঘ্য 73% কমিয়ে দেয় (যেমন, ম্যানুয়াল পিক্সেল পুনরাবৃত্তি)। উদাহরণস্বরূপ, নেটিভ পাইথনের সাথে একটি গাউসিয়ান ব্লার প্রয়োগ করার জন্য নেস্টেড লুপের ~15 লাইন প্রয়োজন; বালিশ সঙ্গে, এটা img.filter(ImageFilter.Gaussian Blur(ব্যাসার্ধ=2)) - এক লাইন।
কমিউনিটি ফোরাম এবং গিটহাব সমস্যাগুলির উপর ভিত্তি করে, এগুলি সরাসরি, কার্যকর উত্তর সহ পিলো সম্পর্কে প্রায়শই জিজ্ঞাসিত শীর্ষ 6টি প্রশ্ন।
হ্যাঁ। ব্যবহার করুন Image.open("animated.gif") এবং এর সাথে ফ্রেমের মাধ্যমে পুনরাবৃত্তি করুন সন্ধান () . পিলো অ্যানিমেটেড GIF পড়তে এবং লিখতে পারে, 1ms নির্ভুলতা পর্যন্ত সময়ের ডেটা সংরক্ষণ করে। উদাহরণ: একটি 20-ফ্রেমের GIF-এর জন্য 0.5 সেকেন্ডের মধ্যে ছবি আলাদা করতে সমস্ত ফ্রেম বের করুন।
ব্যবহার করুন Image.open().convert() এবং সঙ্গে খণ্ডে প্রক্রিয়া .crop() . একটি 100MP চিত্রের জন্য, বালিশের অলস লোডিং প্রাথমিকভাবে শুধুমাত্র 5-10MB ব্যবহার করে পুরো ইমেজ লোড করার পরিবর্তে। উপরন্তু, নির্দিষ্ট করুন ইমেজ.LANCZOS উচ্চ-মানের ডাউনস্যাম্পলিংয়ের জন্য যা মেমরি-দক্ষ।
বালিশ নেটিভভাবে JPEG, PNG, TIFF, BMP, GIF, WebP, এবং ICO সহ 30 টিরও বেশি ফর্ম্যাট সমর্থন করে। পিলোতে WebP সমর্থন একই মানের JPEG থেকে 25-35% ভাল কম্প্রেশন অর্জন করে (Google এর WebP গবেষণার উপর ভিত্তি করে)। সমস্ত সমর্থিত বিন্যাস চেক করতে: পিআইএল আমদানি বৈশিষ্ট্য থেকে; features.get_suppবাted() .
মৌলিক I/O এবং সাধারণ রূপান্তরের জন্য (আকার পরিবর্তন, ক্রপ, ফর্ম্যাট রূপান্তর), বালিশ একই হার্ডওয়্যারের OpenCV থেকে 15-30% দ্রুত কারণ এটির উপরে নিচের অংশ রয়েছে। জটিল কম্পিউটার দৃষ্টির জন্য (বৈশিষ্ট্য সনাক্তকরণ, ম্যাচিং), OpenCV উচ্চতর। ব্যাচ ইমেজ প্রসেসিং অটোমেশনের জন্য সর্বদা বালিশ বেছে নিন।
ব্যবহার করুন Image.alpha_composite() or পেস্ট() একটি স্বচ্ছ ওভারলে সহ। 1000টি চিত্রের একটি ব্যাচ (প্রতিটি 2MB) ~45 সেকেন্ডে ওয়াটারমার্ক করা যেতে পারে একটি সাধারণ ফর-লুপ এবং বালিশের ড্র পদ্ধতি ব্যবহার করে। কাঠামোর জন্য "কিভাবে ব্যবহার করবেন" বিভাগের অধীনে কোড উদাহরণ দেখুন।
হ্যাঁ। বালিশ এবং NumPy অ্যারেগুলির মধ্যে রূপান্তর করুন: np.array(img) এবং Image.fromarray(arr) . এই ইন্টিগ্রেশন 85% ডেটা সায়েন্স ইমেজ পাইপলাইনে ব্যবহৃত হয় (কাগল সার্ভে, 2024)। এটি NumPy এর গাণিতিক ক্রিয়াকলাপগুলির সাথে বালিশের I/O গতির নির্বিঘ্ন সমন্বয়ের অনুমতি দেয়।
বালিশের কার্যকারিতা বাড়ানোর জন্য, এই প্রমাণ-ভিত্তিক নির্দেশিকাগুলি অনুসরণ করুন:
সংক্ষেপে, বালিশ হল পাইথন ইমেজ প্রসেসিং এর চূড়ান্ত সমাধান যে কাজের জন্য রিয়েল-টাইম ভিডিও বা 3D রূপান্তরের প্রয়োজন হয় না। এর গতির সংমিশ্রণ (মূল ক্রিয়াকলাপের জন্য ~0.2s প্রতি 12MP চিত্র), ফর্ম্যাট সমর্থন (30 প্রকার), এবং পরিষ্কার API এটিকে অটোমেশন স্ক্রিপ্ট, ওয়েব ব্যাকএন্ড এবং ডেটা প্রস্তুতির পাইপলাইনগুলির জন্য শিল্পের মান তৈরি করে৷