2015-04-15 36 views
3

我已經設法使用ExifInterface從我的手機上的JPEG中讀取EXIF標記/屬性(元數據),並且我顯然也可以使用設置屬性和保存屬性。奇怪的是,如果我設置了+保存在圖像文件上,我的應用程序就可以獲取該屬性並顯示它。我還可以在另一個應用程序(Google Play上的照片編輯器)中驗證是否確實寫入了EXIF數據。在Android中將EXIF標記(屬性)寫入並保存爲JPEG圖像

ExifInterface exif = new ExifInterface(path_to_image); 
String x = exif.getAttribute("UserComment"); // here, x is always null... 

exif.setAttribute("UserComment", "testtest"); 
exif.saveAttributes(); 

x = exif.getAttribute("UserComment"); // x = "testtest" 

現在,EXIF被保存到JPEG文件:see screenshot of my app。 這也通過照片編輯器應用驗證:see screenshot of that

但是,如果我註釋掉集+保存只是得到(相同的圖像上方),我的應用程序無法獲取/看屬性:

ExifInterface exif = new ExifInterface(path_to_image); 
String x = exif.getAttribute("UserComment"); // x = null (although we know it isn't) 

所以:因爲照片編輯器應用程序可以讀取數據,我做錯了什麼(用寫/保存)。另外,如果我重新運行設置+保存在同一個圖像文件上,我的應用程序將複製相同的標記!除了簡單的設置+保存,還有什麼比這個更重要嗎?

更新:看來問題是依賴於設備。儘管UserComment似乎不是ExifInterface明確支持的標記之一,但某些設備仍然可以設置標籤中的值並獲取其值。它適用於Nexus,但不適用於Sony Xperia。請看看我的代碼用於獲取(查詢),並設定(更新)UserComment標籤in my other post on Content Providers.

+0

上有沒有源代碼的一些研究(Java和C),似乎這種行爲不應該是可能的。你的完整源代碼是什麼樣的?我已經在發佈位中丟失了一個try catch塊。 –

回答

相關問題