我正在用Java编写适用于Android的相机应用。遇到需要我从Exif数据获取定位信息的轮换问题后,我想知道是否可以添加自己的标签。
从版本24开始,我发现了SDK中提供的ExifInterface
类。
我创建对象的方式:
ExifInterface exific = new ExifInterface(new ByteArrayInputStream(jpeg));
jpeg
对象的类型为byte[]
,传递给Camera.PictureCallback
的{{1}}回调。
根据the documentation,有一种方法onPictureTaken
我尝试使用这种方式:
setAttribute
我也尝试使用提供的标签之一:
exific.setAttribute("MY_OWN_TAG", "somevalue");
然后(在另一种方法中),我尝试读取标签:
exific.setAttribute(ExifInterface.TAG_ARTIST, "myself");
记录的值为空。
我想到了一些事情:
try{
ExifInterface exific = new ExifInterface(new ByteArrayInputStream(jpeg));
String rv = exific.getAttribute(tag);
Log.d(TAG, "Obtained value for tag " + tag + ": " + rv);
return rv;
} catch(IOException ioe){
Log.d(TAG, "Exif interface query failed.");
}
构造对象吗?在我看来ByteArrayInputStream
静默失败,因为仅输入流。 las,我看不到其他使用字节数组创建对象的方法。 那么,有没有一种方法可以使用字节数组写入Exif数据?