अजगर के लिए Exif जोड़तोड़ पुस्तकालय [बंद]


108

मैं अजगर के लिए अच्छे एक्साईफ़ (एक्सचेंज करने योग्य छवि फ़ाइल प्रारूप) हेरफेर लाइब्रेरी की तलाश कर रहा हूँ। मैं लचीलेपन (जैसे, प्रदाताओं की मालिकाना टैग को पुनः प्राप्त करने की क्षमता) को प्रसंस्करण गति से अधिक पसंद करता हूं। आप क्या सुझाव देंगे?


शायद प्रश्न को पढ़ना चाहिए: "क्या विकल्प हैं जो एक्ज़िफ (एक्सक्लूसिव इमेज फ़ाइल फॉर्मेट) को संपादित करने के लिए उपलब्ध हैं, जो कि अजगर की विशेषता का उपयोग करते हैं (जैसे कि प्रदाताओं के मालिकाना टैग और छवि प्रारूपों की एक विस्तृत विविधता के साथ कंपेटिबिलिटी प्राप्त करने की क्षमता)?"
dlm

1
@Wooble et al: "यदि इस प्रश्न को सहायता केंद्र में नियमों को फिट करने के लिए पुन: व्यवस्थित किया जा सकता है, तो कृपया प्रश्न को संपादित करें या एक टिप्पणी छोड़ दें।" मैंने बाद में किया, लेकिन क्यू ने आगे की टिप्पणी के बिना बंद कर दिया। क्या देता है? (बस समझने की कोशिश कर रहा है, और समय बर्बाद / टिप्पणी करने के लिए समय बर्बाद नहीं करना चाहता, अगर इसका कोई निष्कर्ष निकलता है)
dlm

मुझे यह सवाल पूछने पर अन्य डेवलपर्स की राय चाहिए थी! PackageOpinionOverflow?
डेरेक लिट्ज़

1
ध्यान रखें कि बहुत सारे गैर-एक्सिव 2 समाधान यहां नहीं पहुंच पाएंगे MakerNote। इस EXIF ​​टैग में, कैमरा निर्माता अपने स्वयं के टैग जोड़ते हैं जो बहुमूल्य जानकारी रखते हैं। इसलिए आपको नीचे के उत्तरों में से अधिकांश पुस्तकालयों के साथ केवल मूल टैग मिलेंगे।
user136036

जवाबों:


65

आप एक्सफ़-पी की जांच करना चाहते हैं :

टिफ और जेपीईजी फ़ाइलों से EXIF ​​डेटा निकालने के लिए पायथन लाइब्रेरी। उपयोग करने के लिए बहुत आसान है - $ ./EXIF.py image.jpg

या पायथन इमेजिंग लाइब्रेरी (PIL) :

पायथन इमेजिंग लाइब्रेरी (PIL) आपके पायथन दुभाषिया में इमेज प्रोसेसिंग क्षमताओं को जोड़ता है। यह लाइब्रेरी कई फ़ाइल स्वरूपों का समर्थन करती है, और शक्तिशाली छवि प्रसंस्करण और ग्राफिक्स क्षमताओं को प्रदान करती है।

वहाँ भी उपयुक्त नाम pyexif है: http://pyexif.sourceforge.net/

Pyexif python लाइब्रेरी और टूल्स का उद्देश्य Jpeg और टिफ़ फ़ाइलों से EXIF ​​जानकारी निकालना है, जिसमें यह शामिल है। यह जानकारी आम तौर पर डिजिटल इमेजिंग उपकरणों जैसे डिजिटल कैमरा, डिजिटल फिल्म स्कैनर आदि का उपयोग करके बनाई गई छवियों में शामिल होती है।

हालाँकि, ऐसा लगता है कि pyexif काफी समय में अपडेट नहीं किया गया है। वे सलाह देते हैं कि अगर उनका एक्स-पीआईई की जांच करने की चाल नहीं चल रही है, तो आपको शायद कोशिश करनी चाहिए कि सबसे पहले, जैसा कि उनके स्रोत पृष्ठ में लगता है कि कुछ गतिविधि हाल ही में हुई है, हालांकि बहुत ज्यादा नहीं है। अंत में, पीआईएल का उपयोग करके आप ऐसा कर सकते हैं:

from PIL import Image
from PIL.ExifTags import TAGS

def get_exif(fn):
    ret = {}
    i = Image.open(fn)
    info = i._getexif()
    for tag, value in info.items():
        decoded = TAGS.get(tag, tag)
        ret[decoded] = value
    return ret

अस्वीकरण :
मुझे वास्तव में कोई पता नहीं है जो सबसे अच्छा है, यह सिर्फ वही है जो मैं Google के साथ मिलकर करने में सक्षम था। :)


19
इनमें से कोई भी "समाधान" EXIF ​​टैग को वापस नहीं लिख सकता है, इसलिए वे प्रश्न का हल नहीं हैं।
ओडिन्हो - वेलमोंट

22
हालाँकि तकनीकी रूप से EXIF ​​टैग लिखने की अनुमति नहीं है, मुझे यह बहुत उपयोगी लगा। कोड लिखने के लिए +1।
सेरिन

3
पाइथन 3.x के लिए कोई जनहित याचिका
पाँच

अच्छा अवलोकन। बस एक नोट: exif-py वर्तमान में Python 3.x के साथ संगत नहीं है। ऐसा लगता है (Python 3.3.3 के साथ परीक्षण किया गया, यह भी देखें github.com/ianare/exif-py/issues/12 )।
cel

3
@MoreThanFive एक पीआईएल कांटा है जिसे भारी बनाए रखा जाता है और जो इसके साथ एकीकृत होता है pip! github.com/python-pillow/Pillow
ibizaman

59

मैं हाल ही में खुद pyexiv2 का उपयोग कर रहा हूं, और यह मेरी जरूरतों को काफी अच्छी तरह से फिट करता है। शायद यह आपके अनुरूप भी हो।


9
रिकॉर्ड के लिए: pyexiv2 उन सभी में सबसे अच्छा-बनाए रखा गया है, और सबसे पूरा (फ़ाइल में वापस EXIF ​​टैग लिखने सहित)।
आरबीपी

1
क्या pyexiv2 आसानी से एक virtualenv के अंदर स्थापित किया जा सकता है?
मैट ऑस्टिन

2
रखरखाव धीमा होने लगता है, और मैक पर स्थापना एक नरक है। : /
भंवर

6
जो लोग परवाह के लिए: दुर्भाग्य से, pyexiv2 केवल पायथन 2. के लिए उपलब्ध है
texnic

1
<QUOTE src = " redmine.yorba.org/projects/gexiv2/wiki "> यह या तो पायथन 2 या 3 के साथ समान रूप से काम करेगा, जो GExiv2 को pyeoniv2 के लिए एक उत्कृष्ट प्रतिस्थापन बनाता है, जो केवल Python 2 का समर्थन करता है। </ QUOTE>
JNO

31

Exiv2 आधारित समाधान

Exiv2 (exiv2: http://exiv2.org/ ) एक परिपक्व, ओपन-सोर्स C ++ लाइब्रेरी है जो कई छवि प्रकारों (JPEG, PNG, TIFF और कई कच्चे प्रारूपों) को मेटाडेटा पढ़ने और लिखने का समर्थन करता है, मानक (Xmp, IPTC) को समझता है और Exif) और गैर-मानक मेटाडेटा ("Makernotes"), और कई प्लेटफार्मों (विंडोज, लिनक्स, और, कुछ काम के साथ, मैक) पर चलता है।

पायथन बाइंडिंग टू एक्सिव 2 हैं:

  • gexiv2 (एक बहु-भाषा बंधन, लेकिन अजगर 2.6 / 2.7 / 3.X के साथ काम करता है): https://wiki.gnome.org/gexiv2
  • pyexiv2 (अब समर्थित नहीं है, लेकिन अजगर 2.6 / 2.7 के साथ काम करता है): http://tilloy.net/dev/pyexiv2/

Pyexiv2 का एक फायदा यह है कि इसमें एक विंडो बिल्ड पाईथन 2.7 के लिए उपलब्ध है। Gexiv2 के लिए एक विंडोज़ निर्माण अनुरोध यहाँ है: https://bugzilla.gnome.org/show_bug.cgi?id=712441

exiv2 और बाइंडिंग सभी खुले स्रोत (GPL) हैं।


अद्यतन इस के लिए exiv2 बाइंडिंग बारे में नवीनतम जानकारी के आधार पर
DLM

pyexiv2काँटेदार कर दिया गया है py3exiv2.tuxfamily.org
अर्टेम क्लेवत्सोव

Tilloy.net लिंक डेड
jtlz2

5

यह लेख शुद्ध पायथन का उपयोग करके EXIF ​​मेटाडेटा (और न केवल उन्हें पढ़ने) लिखने के लिए एक पायथन मॉड्यूल का वर्णन करता है। जाहिर है, पीआईएल, pyexif, और न ही EXIF-py समर्थन EXIF ​​लेखन में से कोई भी। pyexiv2 ब्लीडिंग-एज और प्लेटफ़ॉर्म-विशिष्ट प्रतीत होता है।


यकीन नहीं होता कि यह किसी भी कम खून बह रहा बढ़त माना जा सकता है।
मैड फिजिसिस्ट

5

PIL का उपयोग करें :)

import os,sys
from PIL import Image
from PIL.ExifTags import TAGS

if __name__ == '__main__':
    for (k,v) in Image.open(sys.argv[1])._getexif().iteritems():
        print '%s = %s' % (TAGS.get(k), v)
    os.system('pause')

1
शुद्ध जनहित याचिका / पिलो EXIF ​​टैग को संशोधित करने की अनुमति नहीं देता है। लेकिन इसके साथ एक छोटी सी लाइब्रेरी मदद कर रही है: github.com/hMatoba/Pyxif
साइमन स्टाइनबर्गर

4

Http://redmine.yorba.org/projects/gexiv2/wiki पर पेज ( https://wiki.gnome.org/Projects/gexiv2 बन गया ) अब पढ़ता है :

यह या तो पायथन 2 या 3 के साथ समान रूप से अच्छी तरह से काम करेगा, जो GExiv2 को pyexiv2 के लिए एक उत्कृष्ट प्रतिस्थापन बनाता है, जो केवल पायथन 2 का समर्थन करता है।

तो, Python2 और Python3 दोनों अब GExiv2 द्वारा समर्थित हैं।

खुशखबरी।


2
यह लिंक काम नहीं करता। यह wiki.gnome.org/Projects/gexiv2
user881300

अच्छा अद्यतन! 2013 से 3 साल बीत चुके हैं ...
jno

3

आप Gheorghe Milas की jpeg.py लाइब्रेरी को http://www.emilas.com/jpeg/ पर भी देख सकते हैं , जो "JPEG EXIF, IPTC और COM मेटाडेटा को पढ़ने, लिखने और लिखने के लिए एक पायथन लाइब्रेरी है।"

एक कमी यह है कि वह डायनेडीएनएस के माध्यम से डायनेमिक आईपी पर अपने डोमेन की मेजबानी करता दिखाई देता है, इसलिए यह हमेशा उपलब्ध नहीं होता है।


अब मौजूद नहीं है।
साइमन स्टाइनबर्गर

3

किसी भी तरह मैं पाओलो के ऊपर कोड के साथ _getexif के लिए एक विशेषता प्राप्त करता हूं .. मैं पायथन 2.6.6 और पॉकेट 1.1.7 का उपयोग कर रहा हूं। क्या _getexif अब अप्रचलित है ??

यहाँ एक छोटा संशोधन है जो मेरे लिए काम करता है।

from PIL import Image
from PIL.ExifTags import TAGS

def get_exif(fn):
    ret = {}
    i = Image.open(fn)
#    info = i._getexif()
    info = i.tag.tags
    for tag, value in info.items():
        decoded = TAGS.get(tag, tag)
        ret[decoded] = value
    return ret

3

मैंने अपनी खुद की छोटी लाइब्रेरी लिखना शुरू कर दिया जो PIL में कोड पर आधारित है। इसे यहाँ देखें


1
अरे जो अच्छा लग रहा है। इसके साथ कोई तेज धार?
रिच

@ रीच: मुझे अब याद नहीं है। इसने मेरे लिए काम किया।
अल्बर्ट

3

मैं http://www.sno.phy.queensu.ca/~phil/exiftool/ के आसपास अपने स्वयं के रैपर का उपयोग कर रहा हूं - इसका कारण यह है कि यह बहुत पूर्ण है, देव बहुत सक्रिय है। और लगभग सभी छवि प्रारूपों का समर्थन करने में सक्षम नहीं होना उस परियोजना के लिए एक पूर्ण शोस्टॉपर है जिसके लिए इसकी आवश्यकता है

इसका दोष यह है कि यह अजगर नहीं है, इसलिए आपको उपप्रकार कॉल का उपयोग करने की आवश्यकता होगी, जैसा कि मैं करता हूं।


एक्सिफ़टूल github.com/smarnach/pyexiftool के लिए एक अजगर आवरण है । एक वोट इस तथ्य के लिए है कि यह बहुत पूरा हो गया है।
लॉन्ग वू

वह एक अजगर के लिए पूछ रहा है lib।
डिएगो Woitasen


0

पायथन 2.6 में मॉड्यूल का स्थान अलग है। इसे इस्तेमाल करो:

import Image    
from ExifTags import TAGS
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.