首先,Exif信息是什么?
也不废话,百度百科说的很清楚:
http://baike.baidu.com/link?url=q7uOXmyvU-3HUGt_FwL7MWGJ_sFWj6qo0HQeCV-mC0F5cYeexpIyAEwAlfkgqp-IjDn2D5oepItgW_dXj3N0OK
我的理解呢Exif信息就是照片被拍摄的时候相机的焦距,物距,曝光值等信息,这信息或许对于我们浏览照片不重要,但要是电脑的一些软件要识别这些照片的时候可能就有要求了,比如,Smart3D三维建模的时候就是对Exif信息是由要求的,没Exif信息生成不了模型。
private void saveRxif(File file) throws IOException, JpegFormatException {
//在这里将信息写入图片
JpegHeaders jpegHeaders = null;
jpegHeaders = new JpegHeaders(file);
jpegHeaders.convertToExif();
App1Header app1Header = jpegHeaders.getApp1Header();
//遍历tags 可以得到图片的所有信息
//SortedMap tags = app1Header.getTags();
// 修改EXIF的拍照日期
SimpleDateFormat format = new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
Date curData = new Date(System.currentTimeMillis());
String time = format.format(curData);
app1Header.setValue(App1Header.Tag.DATETIMEORIGINAL, time);//拍摄日期
app1Header.setValue(App1Header.Tag.MAKE, Build.MANUFACTURER + "");//制造商
app1Header.setValue(App1Header.Tag.MODEL, Build.MODEL + "");//手机型号
app1Header.setValue(App1Header.Tag.FNUMBER, "4/2");//光圈值
app1Header.setValue(App1Header.Tag.ISOSPEEDRATINGS, "1");//ISO速度
app1Header.setValue(App1Header.Tag.FLASH, "0");//闪光灯模式 0-没有使用闪光
app1Header.setValue(App1Header.Tag.FOCALLENGTH, "26/1");//焦距
jpegHeaders.save(true);
}
我看网上写入Exif信息有好多种方法,其中一个就是,使用Android 自带的API中的ExifInterface类可以用来写入Exif信息,但如果你这样:
String filename = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath() + File.separator + "img.jpeg";
ExifInterface exifInterface = new ExifInterface(filename);
//时间
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
exifInterface.setAttribute(ExifInterface.TAG_DATETIME, dateFormat.format(System.currentTimeMillis()));
//焦距
exifInterface.setAttribute(ExifInterface.TAG_FOCAL_LENGTH, "fd");
//闪光灯
exifInterface.setAttribute(ExifInterface.TAG_FLASH, "关闭(强制)");
exifInterface.saveAttributes();
其实除了时间和手机生产商等信息其他的都是写不进去的,因为像一些焦距等的值对输入的格式都是有要求的,而setAttribute()方法坑就坑在第二个参数都是String类型,不同的数据的格式我们根本不知道怎么填转换这个类也没有给出提示,因此这个方法行不通。
用第一种方法是可以的.
用到的jar包自取:http://download.csdn.net/detail/qq_27512671/9482556