2014-05-20 50 views
0

我正在使用相機意圖拍照,然後將該圖像轉換爲bytearray並最終將其保存到本地數據庫中。使用相機拍攝的原始圖像具有GPS緯度和經度等所有元數據。但是,從該圖像創建的位圖不包含任何元數據。我怎樣才能將原始的metedata添加到我的圖像?將元數據添加到Android中創建的位圖

這裏是我的代碼在相機意圖返回:

picUri = data.getData()  
Bitmap yourSelectedImage62 = null; 
       String imagebytes2 ; 
       try 
       { 
        yourSelectedImage62 = MediaStore.Images.Media.getBitmap(this.getContentResolver(), picUri); 
        yourSelectedImage62 = Bitmap.createScaledBitmap(yourSelectedImage62, large_width, large_height, true); 
       } catch (FileNotFoundException ex) 
       { 
        Logger.getLogger(Screen_View_Submission.class.getName()).log(Level.SEVERE, null, ex); 
       } catch (IOException ex) { 
        Logger.getLogger(Screen_New_Submission.class.getName()).log(Level.SEVERE, null, ex); 
       } 

       ByteArrayOutputStream bao62 = new ByteArrayOutputStream(); 
       yourSelectedImage62.compress(Bitmap.CompressFormat.JPEG, 75, bao62); 
       byte[] ba62 = bao62.toByteArray(); 
       imagebytes2 = Base64.encodeToString(ba62,Base64.DEFAULT); 
       yourSelectedImage62.recycle(); 

回答

0

元數據是不是位圖的屬性。它被存儲爲JPEG文件的Exinf。使用ExifInterface來更新元數據這裏是一個設置gps座標的例子

exif = new ExifInterface(imageFile.getAbsolutePath()); 
     int num1Lat = (int) Math.floor(latitude); 
     int num2Lat = (int) Math.floor((latitude - num1Lat) * 60); 
     double num3Lat = (latitude - ((double) num1Lat + ((double) num2Lat/60))) * 3600000; 

     int num1Lon = (int) Math.floor(longitude); 
     int num2Lon = (int) Math.floor((longitude - num1Lon) * 60); 
     double num3Lon = (longitude - ((double) num1Lon + ((double) num2Lon/60))) * 3600000; 

     exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE, num1Lat + "/1," + num2Lat + "/1," + num3Lat + "/1000"); 
     exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE, num1Lon + "/1," + num2Lon + "/1," + num3Lon + "/1000"); 

     if (latitude > 0) { 
      exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "N"); 
     } else { 
      exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF, "S"); 
     } 

     if (longitude > 0) { 
      exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, "E"); 
     } else { 
      exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF, "W"); 
     } 
     exif.setAttribute(ExifInterface.TAG_MAKE, "FooBarr"); 
     exif.setAttribute(ExifInterface.TAG_MODEL, "KooKKoo"); 
     exif.setAttribute(ExifInterface.TAG_ORIENTATION,orientation+""); 
     exif.saveAttributes(); 
+0

謝謝,我會試試看。 – Janpan

相關問題