2015-08-31 78 views
2

我想從照片的exif數據中獲取照片的日期和時間。Ionic:EXIF數據不完整

我使用此庫的https://github.com/exif-js/exif-js訪問exif$cordovaCamera來獲得照片。

$cordovaCamera選項:(我讓用戶決定,其中所述圖片應該來自(畫廊或相機),所以source可以是1或0:

var options = { 
    quality: 60, 
    destinationType: Camera.DestinationType.DATA_URL, 
    sourceType: source, 
    allowEdit: false, 
    correctOrientation: true, 
    encodingType: Camera.EncodingType.JPEG, 
    popoverOptions: CameraPopoverOptions, 
    saveToPhotoAlbum: true 
}; 

獲取圖片:

$cordovaCamera.getPicture(options).then(function (imageData) { 
    cameraSuccess(imageData); 
}); 

並處理它:

function cameraSuccess(imageURI) { 

    var imageR = new Image(); 
    imageR.onload = function() { 
     EXIF.getData(imageR, function() { 
      alert(JSON.stringify(this)); 
     }); 
    }; 
    imageR.src = "data:image/jpeg;base64,"+imageURI; 

} 

但是,這是唯一的exif我得到的數據。

"exifdata":{ 
    "Orientation":1, 
    "ExifIFDPointer":38, 
    "ColorSpace":1, 
    "PixelXDimension":500, 
    "PixelYDimension":375 
}, 
"iptcdata":{ 
} 

我也試過Camera.DestinationType.NATIVE_URI確保base64是沒有問題的。

我在沒有任何輸出的情況下,使用上述結果和android設備(從相機拍攝圖像)在ios仿真器(從圖庫中獲取圖像)上測試它。

+0

我認爲,而不是使用EXIF外部庫,你可以使用文件插件來獲取日期和時間文件的細節 –

+0

同意@Anilkumar –

+0

嗯,我也需要其他EXIF信息,我不認爲我可以讓這些文件插件。 – Mazz

回答

2

使用以下選項,我目前可以從Android(5.1 Nexus 5)向服務器發佈包含EXIF數據(我正在尋找日期/時間和GPS)的圖像文件。但不是從iOS(8.4 iPhone 5)。

var options = { 
     quality: 50, 
     destinationType: Camera.DestinationType.FILE_URI, 
     allowEdit: true, 
     encodingType: Camera.EncodingType.JPEG, 
     popoverOptions: CameraPopoverOptions, 
     saveToPhotoAlbum: true 
    }; 

看來,在Camera插件進程中,iOS會以某種方式剝離大部分EXIF數據:其餘的與您的相似。順便設置

<preference name="CameraUsesGeolocation" value="true"/> 

in​​3210似乎不幫助GPS數據。 在你的情況下,我懷疑exif-js試圖提取不再存在的數據。

還在試圖找到解決方案,如果我有任何更新,我會發布它。

+0

我忘記了:在選項中使用targetWidth和targetHeight導致Android去除元數據,所以也許對於correctOrientation – user2364174

0

這是Cordova相機插件中的一個錯誤,它在拾取圖像時會剝下一些標籤。