2014-04-21 6 views
6

मेरे पास एक फोनगैप ऐप है जिसे उपयोगकर्ता को फोन के कैमरे का उपयोग करके फोटो लेने की ज़रूरत है और उपयोगकर्ता को पहले से ही डिवाइस पर फोटो से चुनने दें।फोनगैप/कॉर्डोवा कैमरा प्लगइन - फोटो की तारीख/समय टिकट कैसे प्राप्त करें?

मुझे मेटाडेटा के हिस्से के रूप में फोटो लेने की तिथि/समय पर कब्जा करने की आवश्यकता है, लेकिन मुझे फोनगैप/कॉर्डोवा के साथ यह कैसे करना है, यह समझने में कठिनाई हो रही है।

प्रारंभ में मैंने सोचा कि मैं फ़ाइल एपीआई के FileEntry.getMetadata() कॉल का उपयोग कर सकता हूं लेकिन यह संशोधन विशेषता विशेषता के लिए वैध दिनांक नहीं लौटाता है। मुझे लगता है कि फोनगैप डिवाइस पर फ़ाइल को भी बदल देता है ताकि आप कैमरे प्लगइन से वापस प्राप्त कर सकें, डिवाइस पर मूल फ़ाइल नहीं है, इसलिए अगर getMetadata() कॉल काम करता है, तो तारीख सही नहीं होगी।

क्या इसके चारों ओर कोई अन्य तरीका है, मुझे प्रत्येक प्लेटफ़ॉर्म के लिए कैमरा प्लगइन का अपना संस्करण लिखने से कम?

पागल लगता है कि यह इसके आसपास एकमात्र रास्ता होगा।

उत्तर

7

तो, मैंने इसे समझने में कामयाब रहा है।

अन्य जानकारी के समूह के साथ दिनांक/समय टिकट, जेपीईजी फ़ाइल के अंदर EXIF ​​डेटा टैग से पुनर्प्राप्त किया जा सकता है। यह इस सहायक जेएस लाइब्रेरी का उपयोग करके किया जा सकता है - https://github.com/jseidelin/exif-js

दुर्भाग्य से एंड्रॉइड के लिए कॉर्डोवा कैमरा प्लगइन गैलरी से चुनी गई छवि को बदलने के दौरान EXIF ​​टैग कॉपी नहीं करता है, केवल कैमरे का उपयोग करके छवि लेते समय, यह एक है समस्या है, लेकिन मैं प्लगइन को फोर्क करके इसे ठीक कर दूंगा। प्लगइन का आईओएस संस्करण यह सही काम करता प्रतीत होता है।

रुचि किसी के लिए भी

कोड -

var source = fromCamera 
     ? Camera.PictureSourceType.CAMERA 
     : Camera.PictureSourceType.PHOTOLIBRARY; 

var opts = { 
    encodingType: Camera.EncodingType.JPEG, 
    sourceType: source, 
    destinationType: Camera.DestinationType.NATIVE_URI 
}; 

navigator.camera.getPicture(
     function(imageURI) { 
      window.resolveLocalFileSystemURL(imageURI, 
        function(entry) { 
         entry.file(function(file) { 
          EXIF.getData(file, function() { 
           var datetime = EXIF.getTag(this, "DateTimeOriginal"); 
           alert(datetime); 
          });             

          // do something useful.... 

         }, standardErrorHandler); 
        }, 
        function(e) { 
         alert('Unexpected error obtaining image file.'); 
         standardErrorHandler(e); 
        }); 
     }, 
     function() { 
      // nada - cancelled 
     }, 
     opts); 
+0

धन्यवाद, इससे मुझे आईओएस के लिए भी मदद मिली, क्योंकि 'camera.getPicture' भी EXIF ​​डेटा को तोड़ने लगता है। – Thilo

+1

मुझे आईओएस एमुलेटर पर ऐसा करने में समस्याएं आ रही हैं। डेटटाइम मूल टैग उपलब्ध नहीं है। परिवर्तन 'EXIF.getTag()' 'EXIF.getAllTags करने के लिए()' और उसके बाद प्रत्येक टैग मैं वापस केवल निम्नलिखित मिल प्रिंट आउट हैं: 'ExifIFDPointer' ' ColorSpace' 'PixelXDimension' ' PixelYDimension' –

+2

टैग उपलब्ध इच्छा जेपीईजी स्रोत के आधार पर भिन्न होता है। मैंने जिस भौतिक फोन डिवाइस को डेटटाइम ऑरिजिनल टैग का समर्थन करने का प्रयास किया है, लेकिन आपको उस मामले से निपटना चाहिए जहां अपेक्षित टैग मौजूद नहीं है और इसके बजाय डिफ़ॉल्ट प्रदान करें (या एक त्रुटि इत्यादि)। –

0

की तरह किसी और मैं जवाब है कि के साथ शुरू नापसंद हर कोई "यह एक पूरी तरह से अलग तरीके से करना" लेकिन मैं मूल पोस्टर के रूप में ही समस्या नहीं थी और वैकल्पिक कैमरा प्लगइन cordova-plugin-camera-with-exif का उपयोग कर मुझे मिला सबसे अच्छा समाधान था।

संबंधित मुद्दे