2014-11-22 99 views
3

目前我正在開發具有刪除EXIF標籤功能的Android應用程序。 內置Android庫(android.media.ExifInterface)不允許這樣做。只能編輯現有的值。這就是爲什麼我認爲我可以用空字符串,空格,零等空值來覆蓋它們。 EXIF規範中的標籤有不同的類型,我不能用相同的值覆蓋它們。如何使用Android ExifInterface去除exif標籤

參見: http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html

一些測試我替換下面提供空值的數據之後(在格式它們在開始時顯示的)。在評論中我指定了相應標籤的類型。

private static final Map<String, String> emptyValues = new HashMap<String, String>(); 
static { 
    emptyValues.put(ExifInterface.TAG_APERTURE, "0"); //rational64u 
    emptyValues.put(ExifInterface.TAG_DATETIME, ""); //string 
    emptyValues.put(ExifInterface.TAG_EXPOSURE_TIME, "0.0000"); //rational64u 
    emptyValues.put(ExifInterface.TAG_FLASH, "0"); //int16u 
    emptyValues.put(ExifInterface.TAG_FOCAL_LENGTH, " 0/0"); //rational64u 
    emptyValues.put(ExifInterface.TAG_GPS_ALTITUDE, "0/0"); //rational64u 
    emptyValues.put(ExifInterface.TAG_GPS_ALTITUDE_REF, "0"); //string[2] 
    emptyValues.put(ExifInterface.TAG_GPS_LATITUDE, "0/0,0/0000,00000000/00000"); // rational64u 
    emptyValues.put(ExifInterface.TAG_GPS_LATITUDE_REF, "0"); //string[2] 
    emptyValues.put(ExifInterface.TAG_GPS_LONGITUDE, "0/0,0/0,000000/00000 "); //rational64u 
    emptyValues.put(ExifInterface.TAG_GPS_LONGITUDE_REF, "0"); //sting[2] 
    emptyValues.put(ExifInterface.TAG_GPS_TIMESTAMP, "0:0:0 "); //rational64u[3] 
    emptyValues.put(ExifInterface.TAG_GPS_PROCESSING_METHOD, "0"); //undef 
    emptyValues.put(ExifInterface.TAG_GPS_DATESTAMP, " "); //string[11] 
    emptyValues.put(ExifInterface.TAG_IMAGE_LENGTH, "0"); //int32u 
    emptyValues.put(ExifInterface.TAG_IMAGE_WIDTH, "0"); //int32u 
    emptyValues.put(ExifInterface.TAG_ISO, " "); //int16u 
    emptyValues.put(ExifInterface.TAG_MAKE, " "); //string 
    emptyValues.put(ExifInterface.TAG_MODEL, " "); //string 
    emptyValues.put(ExifInterface.TAG_WHITE_BALANCE, " "); //string 
    emptyValues.put(ExifInterface.TAG_ORIENTATION, " "); // int16u 
} 

這是一個很好的方法嗎?有更聰明的方法嗎?

回答

0

是否只是將圖像加載到Android位圖並將位圖保存到新文件的選項?位圖對象不存儲EXIF數據,所以這會刪除EXIF數據。這種方法的缺點當然是你必須再次壓縮它,你可能會失去一點點的圖像質量。