প্রদত্ত চিত্রটি থেকে প্রথম 30 টি সারি এবং শেষ 30 টি সারি সরিয়ে আমি চিত্রটি ক্রপ করতে চাই। আমি অনুসন্ধান করেছি কিন্তু সঠিক সমাধান পাইনি। কারও কি কিছু পরামর্শ আছে?
প্রদত্ত চিত্রটি থেকে প্রথম 30 টি সারি এবং শেষ 30 টি সারি সরিয়ে আমি চিত্রটি ক্রপ করতে চাই। আমি অনুসন্ধান করেছি কিন্তু সঠিক সমাধান পাইনি। কারও কি কিছু পরামর্শ আছে?
উত্তর:
একটি crop()
পদ্ধতি আছে:
w, h = yourImage.size
yourImage.crop((0, 30, w, h-30)).save(...)
Parameters: box – The crop rectangle, as a (left, upper, right, lower)-tuple.
এর জন্য আপনাকে পিআইএল (বালিশ) আমদানি করতে হবে। মনে করুন আপনার আকার 1200, 1600 রয়েছে We আমরা 400, 400 থেকে 800, 800 এর চিত্র ছাঁটাই করব
from PIL import Image
img = Image.open("ImageName.jpg")
area = (400, 400, 800, 800)
cropped_img = img.crop(area)
cropped_img.show()
(বাম, উপরের, ডান, নিম্ন) এর অর্থ দুটি পয়েন্ট,
একটি 800x600 পিক্সেল চিত্র সহ, চিত্রটির বাম উপরের পয়েন্টটি (0, 0), ডান নীচের পয়েন্টটি (800, 600)।
সুতরাং, চিত্রটি অর্ধেক কাটানোর জন্য:
from PIL import Image
img = Image.open("ImageName.jpg")
img_left_area = (0, 0, 400, 600)
img_right_area = (400, 0, 800, 600)
img_left = img.crop(img_left_area)
img_right = img.crop(img_right_area)
img_left.show()
img_right.show()
পাইথন ইমেজিং লাইব্রেরি উপরের বাম কোণে (0,0) সহ কার্টেসিয়ান পিক্সেল স্থানাঙ্ক সিস্টেম ব্যবহার করে। নোট করুন যে স্থানাঙ্কগুলি প্রচ্ছন্ন পিক্সেল কোণগুলিকে বোঝায়; (0, 0) হিসাবে সম্বোধন করা পিক্সেলের কেন্দ্রটি আসলে (0.5, 0.5) at
স্থানাঙ্কগুলি সাধারণত লাইব্রেরিতে 2-টিপলস (x, y) হিসাবে পাস করা হয়। আয়তক্ষেত্রগুলি 4 টি-টিপল হিসাবে উপস্থাপিত হয়, উপরের বাম কোণটি প্রথমে দেওয়া হয়। উদাহরণস্বরূপ, 800x600 পিক্সেল চিত্রের সমস্তটি জুড়ে একটি আয়তক্ষেত্রটি (0, 0, 800, 600) হিসাবে লিখিত হয়েছে is
এটি করার একটি সহজ উপায় হ'ল ইমেজআপস থেকে ক্রপ ব্যবহার করা । আপনি প্রতিটি দিক থেকে ক্রপ করতে চান এমন পিক্সেল সংখ্যাকে খাওয়াতে পারেন।
from PIL import ImageOps
border = (0, 30, 0, 30) # left, up, right, bottom
ImageOps.crop(img, border)