এই বিভাগে আমরা দেখতে যাচ্ছি আমাদের কাছে কী ধরনের ইমেজ ফাইল আছে। সুতরাং একটি পরিস্থিতি বিবেচনা করুন, যেখানে একটি ডিরেক্টরিতে আমাদের শত শত ইমেজ ফাইল রয়েছে এবং আমরা সমস্ত jgeg (বা কোনো নির্দিষ্ট ইমেজ ফাইল টাইপ) ফাইল টাইপ পেতে চাই। এই সব আমরা পাইথন ব্যবহার করে প্রোগ্রাম্যাটিকভাবে করতে যাচ্ছি।
একটি চিত্রের ধরন নির্ধারণের জন্য পাইথন প্রদানকারী লাইব্রেরি, এই ধরনের লাইব্রেরিতে imghdr।
পাইথন imghdr প্যাকেজ ফাইল বা বাইট স্ট্রীমে থাকা ছবির ধরন নির্ধারণ করে।
ইনস্টলেশন
আপনি যদি python 3.6 বা উচ্চতর ব্যবহার করেন, তাহলে imghdr মডিউল একটি স্ট্যান্ডার্ড প্যাকেজ এবং পাইথন ইনস্টলেশনের সাথে আসবে।
আপনার মেশিনে imghdr ইনস্টল করতে, আপনার কমান্ড টার্মিনালে নিচের কমান্ডটি চালান:
pip install imghdr
সফল ইনস্টলেশনের পরে, imghdr সঠিকভাবে ইনস্টল করা হয়েছে কিনা তা যাচাই করার জন্য শুধুমাত্র আপনার পাইথন শেলের মডিউলটি আমদানি করুন৷
>>> import imghdr >>>আমদানি করুন
যদি আপনি কোন ত্রুটি না পান, তাহলে এর মানে হল আপনার মেশিনে imghdr ইনস্টল করা আছে।
সিনট্যাক্স
imghdr প্যাকেজ নিম্নলিখিত ফাংশন সংজ্ঞায়িত করে:
imghdr.what(filename[, h])
কোথায়
-
ফাইলের নাম :ফাইলের নাম অনুসারে ফাইলটিতে থাকা চিত্র ডেটা পরীক্ষা করে এবং চিত্রের প্রকার বর্ণনা করে একটি স্ট্রিং প্রদান করে।
-
h :এটি ঐচ্ছিক, যদি h থাকে- তাহলে ফাইলের নাম উপেক্ষা করা হয় এবং h পরীক্ষা করার জন্য বাইট স্ট্রীম ধারণ করে।
নীচে অনুমোদিত চিত্রের প্রকারগুলি রয়েছে যা imghdr প্যাকেজ ব্যবহার করে স্বীকৃত হয়৷
৷মান | চিত্র বিন্যাস |
---|---|
'rgb' | SGI ImgLib ফাইল |
'gif' | GIF 87a এবং 89a ফাইল |
'pbm' | পোর্টেবল বিটম্যাপ ফাইল |
'pgm' | পোর্টেবল গ্রেম্যাপ ফাইল |
'ppm' | পোর্টেবল পিক্সম্যাপ ফাইল |
'টিফ' | TIFF ফাইল |
'rast' | সান রাস্টার ফাইল |
'xbm' | X বিটম্যাপ ফাইল |
'jpeg' | JFIF বা Exif ফর্ম্যাটে JPEG ডেটা |
'bmp' | BMP ফাইল |
'png' | পোর্টেবল নেটওয়ার্ক গ্রাফিক্স |
কিন্তু আমরা ফাইলের প্রকারের তালিকা প্রসারিত করতে পারি যা imghdr প্যাকেজ এই ভেরিয়েবলের সাথে যুক্ত করে চিনতে পারে৷
imghdr.tests
এই ফাংশনটিতে পৃথক পরীক্ষাগুলি সম্পাদনকারী ফাংশনের তালিকা রয়েছে। প্রতিটি ফাংশন দুটি আর্গুমেন্ট নেয়:বাইট-স্ট্রিম এবং একটি খোলা ফাইলের মতো বস্তু। যাইহোক, যখন বাইট-স্ট্রিম দিয়ে what() বলা হয়, তখন ফাইলের মতো বস্তুটি None হবে।
পরীক্ষার ফাংশনটি একটি স্ট্রিং হিসাবে চিত্রের ধরনটি ফেরত দেবে অন্য কোনটি ব্যর্থ হলে৷
>>> import imghdr >>> imghdr.what('clock.jpg') 'jpeg'
নীচে imghdr প্যাকেজের শুধুমাত্র একটি বাস্তবায়ন রয়েছে, যেখানে কিছু নির্দিষ্ট ইমেজফাইল এক্সটেনশন থাকলে নির্দিষ্ট অপারেশন করা হয়:
def identify_filetype(url, imageName, folderName): session = _setupSession() try: # time out is another parameter tuned image = session.get(url, timeout = 5) with open(os.path.join(folderName, imageName),'wb') as fout: fout.write(image.content) fileExtension = imghdr.what(os.path.join(folderName, imageName)) if fileExtension is None: os.remove(os.path.join(folderName, imageName)) else: newName = imageName + '.' + str(fileExtension) os.rename(os.path.join(folderName, imageName), os.path.join(folderName, newName)) except Exception as e: print ("failed to download one pages with url of " + str(url))