Android Create Custom Exif attributes for an image file

≡放荡痞女 提交于 2020-01-28 01:54:07

问题


currently i am trying to add custom exif tag/data to an image file that is in photo album.

I am able to modify the existing tags defined in ExifInterface class

However, i want to store custom data, such as user id of my app user, but it seems there is no way i can create a custom exif attribute

the closest solution I found is here, but does not work,


回答1:


Try saving the Exif data with the tag:

"UserComment"

Code:

String mString = "Your message here";     
ExifInterface exif = new ExifInterface(path_of_your_jpeg_file);
exif.setAttribute("UserComment", mString);
exif.saveAttributes();

You can put anything you want in there (as String) and simply parse the string. I wish we could create and name our own exif tags, but the reality is that we can't. So this is the best solution I came up with.




回答2:


Save the Exif data with the tag "ImageDescription"

https://developer.android.com/reference/android/media/ExifInterface.html

Code

try {
  String imageDescription = "Your image description";     
  ExifInterface exif = new ExifInterface(file_name_of_jpeg);
  exif.setAttribute("ImageDescription", imageDescription);
  exif.saveAttributes();
} catch (IOException e) {
  // handle the error
}



回答3:


If you cannot use an existing exif attribute (such as "UserComment" or "ImageDescription"), then you are out of luck with using ExifInterface.

Exif attributes are represented as binary tag numbers with the values encoded in binary data formats. ExifInterface class abstracts this away from the programmer, and provides a setAttribute method where the tag and the value are supplied as strings. Behind the scenes, it maps between the string form and the corresponding binary attribute representation.

The problem is that the ExifInterface class only knows how to map a fixed set of attributes. Furthermore, the API doesn't provide a way to add the descriptors for new (e.g. custom) exif attributes to its mapping tables.

If you are really desperate, the alternatives are:

  • Look for an alternative library that works with Android.
  • Do nasty things with reflection to add extra mappings to ExifInterface's internal (private) mapping tables. If you try this, you will need to deal with the fact that the ExifInterface's implementation has changed radically over time. (In some older versions, the encoding and decoding of attributes is implemented in a native code library!)


来源:https://stackoverflow.com/questions/15506862/android-create-custom-exif-attributes-for-an-image-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!