发表时间:2022-03-25来源:网络
从微信某个朋友圈随便找了一位美女发的照片
Java对照片进行分析,效果如下
获得结果如下:
{海拔=0 metres, 手机=Xiaomi, 纬度=24.41046111111111, 型号=MI MAX, 经度=103.41424722222223, 拍摄时间=2018:12:01 16:37:32, 拍摄地点=中国 云南省 红河哈尼族彝族自治州 弥勒市 XXX路 XXX号 温泉XXXX酒店} 经纬度:24.41046111111111,103.41424722222223 拍摄时间:2018:12:01 16:37:32 手机型号:Xiaomi MI MAX 拍摄地点:中国 云南省 红河哈尼族彝族自治州 弥勒市 XXX路 XXX号 温泉XXX酒店 {"status":0,"result":{"location":{"lng":103.42283328917563,"lat":24.413805252378915}, "formatted_address":"云南省红河哈尼族彝族自治州弥勒市XXX路","business":"","addressComponent": {"country":"中国","country_code":0,"country_code_iso":"CHN","country_code_iso2":"CN", "province":"云南省","city":"红河哈尼族彝族自治州","city_level":2,"district":"弥勒市","town":"","town_code":"","adcode":"532504","street":"温泉路","street_number":"","direction":"","distance":""},"cityCode":107}} 复制代码emmm,不好过多描述
这里需要引入两个jar包,用于读取照片的exif信息,里面包含照片的完整信息。
资源下载,放在最后啦。
首先利用jar包工具,
将照片里的Exif原始信息读取出来。
完整代码如下:
public static HashMap readPicInfo(String file_path) { HashMap map = new HashMap(); Tag tag = null; File jpegFile = new File(file_path); Metadata metadata; try { metadata = JpegMetadataReader.readMetadata(jpegFile); Iterator it = metadata.getDirectories().iterator(); while (it.hasNext()) { Directory exif = it.next(); Iterator tags = exif.getTags().iterator(); while (tags.hasNext()) { tag = (Tag) tags.next(); System.out.println(tag.getTagName()+"--"+tag.getDescription()); } } } catch (JpegProcessingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return map; } public static void main(String[] args) { //传入照片的绝对路径 readPicInfo("C:\\Users\\pacer\\Desktop\\img\\others\\10.jpg"); } 复制代码我们来看一下,能获得那些信息:
拍摄的手机型号、GPS精确位置、拍摄时间、像素、修改日期
甚至包括,拍摄地点的海拔信息都是有的。
我们通过exif读取的GPS信息,是类似于度、分、秒这种格式的。
我们需要将GPS信息通过计算转换成十进制的数字位数,
这样才可以调用百度地图API或者其他的地图API来将GPS信息转换为地理位置信息。
/*** * 经纬度坐标格式转换 * @param Gps */ public double latitude_and_longitude_convert_to_decimal_system(String Gps) { String a = Gps.split("°")[0].replace(" ", ""); String b = Gps.split("°")[1].split("'")[0].replace(" ", ""); String c = Gps.split("°")[1].split("'")[1].replace(" ", "").replace("\"", ""); double gps_dou = Double.parseDouble(a)+Double.parseDouble(b)/60 + Double.parseDouble(c)/60/60; return gps_dou; } 复制代码通过这个函数,我们将经纬度信息转换为10进制数字信息。
我们通过exif原始信息,拿到的是一串地理坐标数字。
如果想要转换为具体的地址信息,那么就需要通过各大地图API来进行转换,
小伙伴们可以自己去免费注册一个百度地图API,然后通过调用它提供的接口,
就可以将传入的GPS坐标值,转换为地址信息。当然,这里也可以用我的。
调用接口方法如下:
//接口调用方法如下: //api_key:是你注册的key值 //coords:是你的经纬度坐标 http://api.map.baidu.com/reverse_geocoding/v3/?ak="+api_key+"&output=json&coordtype=wgs84ll&location="+coords 复制代码最后,将代码整理汇总一下。
做成了一个简单的java小项目
有java环境,即可运行~~
深藏功与名~~
需要相关源码笔记的可以扫一下 备注【Java】

皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14