Android 照片属性获取
2018-01-08 10:58
537 查看
手机照片的属性获取
import android.media.ExifInterface; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.utils.CoordinateConverter; import java.io.File; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * CreateTime 2017/8/7 14:34 * Author LiuShiHua * Description:获取照片的属性 */ public class PhotoAttrsUtil { public static PictureAttrs getPhotoAttrs(String path) { if (path == null) return null; File file = new File(path); if (!file.exists()) return null; String TAG_APERTURE = null; //光圈值 String TAG_DATETIME = null; //拍照时间 String TAG_EXPOSURE_TIME = null;//曝光时间 String TAG_FLASH = null; //闪光灯 String TAG_FOCAL_LENGTH = null; //焦距 String TAG_IMAGE_LENGTH = null; //图片高度 String TAG_IMAGE_WIDTH = null; //图片宽度 String TAG_ISO = null; //ISO String TAG_MAKE = null; //设备品牌 String TAG_MODEL = null; //设备型号,整形表示 String TAG_ORIENTATION = null; //旋转角度 String TAG_WHITE_BALANCE = null;//白平衡 String TAG_GPS_LATITUDE_REF = null;//纬度 [南S/北N] String TAG_GPS_LONGITUDE_REF = null;//经度 [东E/西W] String TAG_GPS_LATITUDE = null;//纬度 String TAG_GPS_LONGITUDE = null;//经度 try { ExifInterface exifInterface = new ExifInterface(path); TAG_APERTURE = exifInterface.getAttribute(ExifInterface.TAG_APERTURE); TAG_DATETIME = exifInterface.getAttribute(ExifInterface.TAG_DATETIME); TAG_EXPOSURE_TIME = exifInterface.getAttribute(ExifInterface.TAG_EXPOSURE_TIME); TAG_FLASH = exifInterface.getAttribute(ExifInterface.TAG_FLASH); TAG_FOCAL_LENGTH = exifInterface.getAttribute(ExifInterface.TAG_FOCAL_LENGTH); TAG_IMAGE_LENGTH = exifInterface.getAttribute(ExifInterface.TAG_IMAGE_LENGTH); TAG_IMAGE_WIDTH = exifInterface.getAttribute(ExifInterface.TAG_IMAGE_WIDTH); TAG_ISO = exifInterface.getAttribute(ExifInterface.TAG_ISO); TAG_MAKE = exifInterface.getAttribute(ExifInterface.TAG_MAKE); TAG_MODEL = exifInterface.getAttribute(ExifInterface.TAG_MODEL); TAG_ORIENTATION = exifInterface.getAttribute(ExifInterface.TAG_ORIENTATION); TAG_WHITE_BALANCE = exifInterface.getAttribute(ExifInterface.TAG_WHITE_BALANCE); TAG_GPS_LATITUDE_REF = exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF); TAG_GPS_LONGITUDE_REF = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF); TAG_GPS_LONGITUDE_REF = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF); TAG_GPS_LONGITUDE_REF = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF); TAG_GPS_LATITUDE = exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE); TAG_GPS_LONGITUDE = exifInterface.getAttribute(ExifInterface.TAG_GPS_LONGITUDE); } catch (IOException e) { e.printStackTrace(); } // L.d("光圈值:" + TAG_APERTURE); // L.d("拍摄时间:" + TAG_DATETIME); // L.d("曝光时间:" + TAG_EXPOSURE_TIME); // L.d("闪光灯:" + TAG_FLASH); // L.d("焦距:" + TAG_FOCAL_LENGTH); // L.d("图片高度:" + TAG_IMAGE_LENGTH); // L.d("图片宽度:" + TAG_IMAGE_WIDTH); // L.d("ISO:" + TAG_ISO); // L.d("设备品牌:" + TAG_MAKE); // L.d("设备型号:" + TAG_MODEL); // L.d("旋转角度:" + TAG_ORIENTATION); // L.d("白平衡:" + TAG_WHITE_BALANCE); // L.d("纬度:" + getRationalLatLonToFloat(TAG_GPS_LATITUDE, TAG_GPS_LATITUDE_REF)); // L.d("经度:" + getRationalLatLonToFloat(TAG_GPS_LONGITUDE, TAG_GPS_LONGITUDE_REF)); LatLng latLng = new LatLng(getRationalLatLonToFloat(TAG_GPS_LATITUDE, TAG_GPS_LATITUDE_REF), getRationalLatLonToFloat(TAG_GPS_LONGITUDE, TAG_GPS_LONGITUDE_REF)); LatLng baidu = transGoogleGpsToBaiduGps(latLng); return new PictureAttrs(getTimeFormat(TAG_DATETIME), TAG_MODEL, baidu.latitude, baidu.longitude, null); } //将经纬度String转换成double private static double getRationalLatLonToFloat(String rationalString, String ref) { if (rationalString == null || ref == null) return 0.0; String[] parts = rationalString.split(","); String[] pair; pair = parts[0].split("/"); double degrees = Double.parseDouble(pair[0].trim()) / Double.parseDouble(pair[1].trim()); pair = parts[1].split("/"); double minutes = Double.parseDouble(pair[0].trim()) / Double.parseDouble(pair[1].trim()); pair = parts[2].split("/"); double seconds = Double.parseDouble(pair[0].trim()) / Double.parseDouble(pair[1].trim()); double result = degrees + (minutes / 60.0) + (seconds / 3600.0); if ((ref.equals("S") || ref.equals("W"))) { return -result; } return result; } public static class PictureAttrs { private String time; private String model;//手机型号 private double latitude;//纬度 private double longitude;//经度 private String seaLevel;//海拔高度 public PictureAttrs(String time, String model, double latitude, double longitude, String seaLevel) { this.time = time; this.model = model; this.latitude = latitude; this.longitude = longitude; this.seaLevel = seaLevel; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public String getModel() { return model; } public void setModel(String model) { this.model = model; } public double getLatitude() { return latitude; } public void setLatitude(double latitude) { this.latitude = latitude; } public double getLongitude() { return longitude; } public void setLongitude(double longitude) { this.longitude = longitude; } public String getSeaLevel() { return seaLevel; } public void setSeaLevel(String seaLevel) { this.seaLevel = seaLevel; } } //转换时间格式 private static String getTimeFormat(String resTime) { if (Tools.isEmpty(resTime)) return ""; Date date = null; try { date = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss").parse(resTime); return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date); } catch (ParseException e) { e.printStackTrace(); } return resTime; } //转换成百度坐标 private static LatLng transGoogleGpsToBaiduGps(LatLng sourceLatLng) { CoordinateConverter converter = new CoordinateConverter(); converter.from(CoordinateConverter.CoordType.GPS); converter.coord(sourceLatLng); return converter.convert(); } }
相关文章推荐
- 获取Android相册中jpg照片的各属性
- Android获取照片、裁剪图片、压缩图片
- getprop 获取android系统属性
- Android开发之获取相册照片和获取拍照照片
- android自定义控件(7)-获取自定义ImageView的src属性
- Android开发之获取相册照片和获取拍照照片
- Android应用资源总结八: 自定义属性获取值的过程解惑
- android settings--简述获取部分系统属性
- 使用和获取Android的主题属性
- Android如何在代码中获取attr属性的值
- android 利用反射获取当前系统sdk版本等属性
- 获取照片的属性信息
- Android学习——怎么SDCard上的获取相册照片
- 【Android】快捷自定义Dialog对话框并获取属性
- Android 获取照片位置信息
- Android 获取照片的方法(2)
- java获取照片相关属性
- 学习android 笔记(4):如何获取屏幕的相关属性以及dp 、dip、dpi 、px的概念
- android获取状态栏高度+属性动画注意事项
- Android开发之获取相册照片和获取拍照照片二