写入GPS信息到jpeg格式的图片中ExifInterface类的使用
发表时间:2020-10-19
发布人:葵宇科技
浏览次数:165
写入GPS信息到jpeg格式的图片中 ExifInterface类的应用
Jpge格式是图片紧缩格式的一种,jpg就属于这个一一种;我们如须要将gps信息写入到图片中本身是比较简单的,获取图片句柄ExifInterface就可以了;然则我在做的过程中碰着了几个问题,解决之后便推敲将这一块写出来供大年夜家参考。
写入GPS信息到jpeg格式的图片一共三个步调,获取句柄,写入信息,验证写入信息
第一步:获取句柄
// 获取图片前缀
           ExifInterfaceexif = newExifInterface(filePath);这里关键的一点是filepath这个参数,这是文件的绝对路径加文件名(肯定是包含文件的后缀名的!)
第二步:写入信息
// 写入经度信息
           exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,
                  this.gpsInfoConvert(jingdu));
           exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF,
                  jingdu> 0 ? "E": "W");
//         写入纬度信息
           exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,
                  gpsInfoConvert(weidu));
           exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF,
                  weidu> 0 ? "N": "S");
//         履行保存
           exif.saveAttributes();膳绫擎的代码中jingdu和weidu都是已经申明并获得复制的变量,代表经纬度;最后的履行保存必定要操作,不然信息可能写入不成功。第三步:验证写入信息
ExifInterface exiftest = null;
           exiftest= newExifInterface(filePath);
           this.printMessage("写完后的校验:", exiftest);这个printMessage函数是自定义的信息输出函数,旨在读出图片中的GPS信息,以验证。
private void printMessage(String tag, ExifInterface e) {
		System.out.println(tag + "\n"
				+ e.getAttribute(ExifInterface.TAG_GPS_LATITUDE) + "\n"
				+ e.getAttribute(ExifInterface.TAG_GPS_LONGITUDE) + "\n"
				+ e.getAttribute(ExifInterface.TAG_GPS_PROCESSING_METHOD)
				+ "\n" + e.getAttribute(ExifInterface.TAG_IMAGE_LENGTH) + "\n"
				+ e.getAttribute(ExifInterface.TAG_IMAGE_WIDTH));【附注】
1、 膳绫擎比较重要的处所有两处,第一是new ExifInterface(filePath)这里的参数是指的绝对路径加文件名,ExifInterface这个类其实不是饰辞尽管它这么写了;其次即使你写的路径纰谬,它也不会报错甚至提示,这就导致路径纰谬不易发明,我当时就犯了这种缺点,没有及时发明浪费了时光
2、 必定要记得履行保存;写入的经纬度信息直接精晓过百度地图获得的经纬度信息写进去会有问题,格式纰谬,必须经由gpsInforConvert(double aa)函数进行转换,这个函数也是我自定义的,发明格式纰谬对比标准格式写的。
格式转换函数:
private String gpsInfoConvert(double gpsInfo) {
       gpsInfo= Math.abs(gpsInfo);
       Stringdms = Location.convert(gpsInfo, Location.FORMAT_SECONDS);
       String[]splits = dms.split(":");
       String[]secnds = (splits[2]).split("\\.");
       Stringseconds;
       if (secnds.length == 0) {
           seconds= splits[2];
       }else{
           seconds= secnds[0];
       }
       return splits[0] + "/1," + splits[1] + "/1," + seconds + "/1";
}
源码下载
(因为实例中须要获取GPS信息,是以源码中已经应用了百度地图的sdk,输入本身的key之后便可以直接应用获取GPS信息写入到jpeg图片中)








