赞
踩
最近工作中遇到处理图片的一些场景,主要是批量提取图片中一些图像宽高、分辨率以及物理焦距等信息。然后在使用过程中也是看到图片中包含了很多其他有用的信息,本文就和大家一起分享这个小技巧吧。
- <dependency>
- <groupId>com.drewnoakes</groupId>
- <artifactId>metadata-extractor</artifactId>
- <version>2.16.0</version>
- </dependency>
- //分析图片获取地址
- public static Map<String,String> PicAnalysis(String path) throws JpegProcessingException, IOException {
- Map<String,String> map = new HashMap();
- System.out.println("强大的语言正在识别图片地址...");
- File picFile = new File(path);
- Metadata metadata = JpegMetadataReader.readMetadata(picFile);
- Iterator<Directory> it = metadata.getDirectories().iterator();
- while (it.hasNext()) {
- Directory exif = it.next();
- Iterator<Tag> tags = exif.getTags().iterator();
- while (tags.hasNext()) {
- Tag tag = tags.next();
- map.put(tag.getTagName(),tag.getDescription());
- System.out.println(tag.getTagName() + ":" +tag.getDescription());
- }
- }
- System.out.println("图片分析完毕!");
- return map;
- }
该方法会返回如下信息,相当多,这里整理成表格:
从图片中拿出的信息为度分秒格式:即30° 14' 32.52"
,我们需要将其转换为经纬度:如121.485559,31.240778
,代码如下:
- public static String translate(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 = Double.parseDouble(a)+Double.parseDouble(b)/60 + Double.parseDouble(c)/60/60;
- return String.valueOf(gps);
- }
获取到具体坐标后,这距离成功只有半步之遥,接下来调用高德地图的Api来获取具体地址。
- public static void getAddress( Map<String,String> param){
- String str = RequestUtils.sendGet("https://restapi.amap.com/v3/geocode/regeo", "key=5a3c45fd68d04bbc&location="+translate(param.get("GPS Longitude"))+","+translate(param.get("GPS Latitude")));
- JSONObject result = JSON.parseObject(str);
- System.out.println("拍摄时间:" +param.get("Date/Time"));
- System.out.println("拍摄地点:" +result.getJSONObject("regeocode").getString("formatted_address"));
- System.out.println("手机型号:" +param.get("Make") +" " + param.get("Model"));
- System.out.println(str);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。