मैंने 2002 से छवि/वीडियो फ़ाइलों से मेटाडेटा निकालने के लिए simple open-source library बनाए रखा।
// Read all metadata from the image
var directories = ImageMetadataReader.ReadMetadata(stream);
// Find the so-called Exif "SubIFD" (which may be null)
var subIfdDirectory = directories.OfType<ExifSubIfdDirectory>().FirstOrDefault();
// Read the DateTime tag value
var dateTime = subIfdDirectory?.GetDateTime(ExifDirectoryBase.TagDateTimeOriginal);
मेरी मानक में, इस कोड बार 12 से अधिक Image.GetPropertyItem
तुलना में तेजी से चलाता है, और लगभग 17 बार WPF JpegBitmapDecoder
/BitmapMetadata
एपीआई की तुलना में तेजी।
लाइब्रेरी से उपलब्ध अतिरिक्त जानकारी का एक टन है जैसे कैमरा सेटिंग्स (एफ-स्टॉप, आईएसओ, शटर गति, फ्लैश मोड, फोकल लम्बाई, ...), छवि गुण (आयाम, पिक्सेल कॉन्फ़िगरेशन) और अन्य चीजें जैसे जीपीएस पदों, कीवर्ड, कॉपीराइट जानकारी, आदि
यदि आप केवल मेटाडेटा में रूचि रखते हैं, तो इस लाइब्रेरी का उपयोग करना बहुत तेज है क्योंकि यह छवि (यानी बिटमैप) को डीकोड नहीं करता है।यदि आपके पास पर्याप्त संग्रहण है तो आप कुछ सेकंड में हजारों छवियों को स्कैन कर सकते हैं।
ImageMetadataReader
कई फाइल प्रकारों (जेपीईजी, पीएनजी, जीआईएफ, बीएमपी, टीआईएफएफ, पीसीएक्स, वेबपी, आईसीओ, ...) को समझता है। आप कि आप जेपीईजी साथ काम कर रहे पता , और आप केवल Exif डेटा चाहते हैं, तो आप इस प्रक्रिया भी तेजी से निम्नलिखित के साथ कर सकते हैं:
var directories = JpegMetadataReader.ReadMetadata(stream, new[] { new ExifReader() });
मेटाडाटा-निकालने पुस्तकालय उपलब्ध है NuGet और code's on GitHub के माध्यम से। उन सभी अद्भुत योगदानकर्ताओं के लिए धन्यवाद जिन्होंने लाइब्रेरी में सुधार किया है और वर्षों में टेस्ट छवियां जमा की हैं।
कुछ परीक्षणों के बाद मुझे पता चला कि आपका उत्तर सबसे अच्छा है। धन्यवाद। – Sergio
अब केवल अगर आप यह जांचने के लिए चेक करते हैं कि यह पहले मौजूद है या नहीं। यह संपत्ति हमेशा एक मौका नहीं है। –
ग्रेट सॉल्यूशन! संपत्ति की जांच महत्वपूर्ण है। यदि आप जोड़ते हैं (myImage.PropertyIdList.Any (x => x == 36867)) आपकी जांच के रूप में यह बहुत अच्छा काम करता है! –