写入GPS信息到jpeg格式的图片中ExifInterface类的使用 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

写入GPS信息到jpeg格式的图片中ExifInterface类的使用

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:116


写入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图片中)
 

相关案例查看更多