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
}
這是一個很好的方法嗎?有更聰明的方法嗎?