इस खंड में हम देखेंगे कि हमारे पास किस प्रकार की छवि फ़ाइल है। तो एक स्थिति पर विचार करें, जहां एक निर्देशिका में हमारे पास सैकड़ों छवि फ़ाइल हैं और हम सभी jgeg (या कोई विशेष छवि फ़ाइल प्रकार) फ़ाइल प्रकार प्राप्त करना चाहते हैं। यह सब हम अजगर का उपयोग करके प्रोग्रामेटिक रूप से करने जा रहे हैं।
एक छवि के प्रकार को निर्धारित करने के लिए पायथन प्रोवाइडलाइब्रेरी, ऐसी लाइब्रेरी पर imghdr है।
अजगर imghdr पैकेज फ़ाइल या बाइट स्ट्रीम में निहित छवि के प्रकार को निर्धारित करता है।
इंस्टॉलेशन
इस बात की बहुत अधिक संभावना है कि यदि आप अजगर 3.6 या उच्चतर का उपयोग कर रहे हैं, तो imghdr मॉड्यूल एक मानक पैकेज है और यह अजगर स्थापना के साथ आएगा।
अपनी मशीन में imghdr स्थापित करने के लिए, बस अपने कमांड टर्मिनल में कमांड के नीचे चलाएँ:
pip install imghdr
सफल स्थापना के बाद, यह सत्यापित करने के लिए कि imghdr ठीक से स्थापित है या नहीं, केवल अपने पायथन शेल में मॉड्यूल आयात करें।
>>> import imghdr >>>
यदि आपको कोई त्रुटि नहीं मिल रही है, तो इसका मतलब है कि आपकी मशीन में imghdr स्थापित है।
सिंटैक्स
imghdr पैकेज निम्नलिखित फ़ंक्शन को परिभाषित करता है:
imghdr.what(filename[, h])
कहां
-
फ़ाइल नाम :फ़ाइल नाम द्वारा नामित फ़ाइल में निहित छवि डेटा का परीक्षण करता है और छवि प्रकार का वर्णन करने वाली एक स्ट्रिंग देता है।
-
ज :यह वैकल्पिक है, यदि h मौजूद है- तो फ़ाइल नाम को अनदेखा कर दिया जाता है और h को परीक्षण के लिए बाइट स्ट्रीम शामिल माना जाता है।
नीचे अनुमत छवि प्रकार हैं जिन्हें imghdr पैकेज का उपयोग करके पहचाना जाता है।
Value वें> <वें शैली ="पाठ-संरेखण:केंद्र;"> छवि प्रारूप वें> | |
---|---|
'rgb' | SGI ImgLib Files |
'gif' | GIF 87a और 89a फ़ाइलें |
'pbm' | पोर्टेबल बिटमैप फ़ाइलें |
'pgm' | पोर्टेबल ग्रेमैप फ़ाइलें |
'ppm' | पोर्टेबल पिक्समैप फ़ाइलें |
'tiff' | TIFF Files |
'rast' | Sun Raster Files |
'xbm' | X बिटमैप फ़ाइलें |
'jpeg' | JFIF या Exif फॉर्मेट में JPEG डेटा |
'bmp' | BMP files |
'png' | पोर्टेबल नेटवर्क ग्राफ़िक्स |
लेकिन हम उन फ़ाइल प्रकारों की सूची का विस्तार कर सकते हैं जिन्हें imghdr पैकेज इस चर में जोड़कर पहचान सकता है।
imghdr.tests
इस फ़ंक्शन में व्यक्तिगत परीक्षण करने वाले कार्यों की सूची है। प्रत्येक फ़ंक्शन दो तर्क लेता है:बाइट-स्ट्रीम और एक खुली फ़ाइल जैसी वस्तु। हालाँकि, जब क्या () को बाइट-स्ट्रीम के साथ कहा जाता है, तो फ़ाइल जैसी वस्तु कोई नहीं होगी।
परीक्षण फ़ंक्शन छवि प्रकार को एक स्ट्रिंग के रूप में लौटाएगा और कोई नहीं यदि यह विफल रहा।
>>> 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))