«Эта статья участвовала в мероприятии Haowen Convocation Order, щелкните, чтобы просмотреть:Двойные заявки на внутреннюю и внешнюю стороны, призовой фонд в 20 000 юаней ждет вас, чтобы бросить вызов!"
Привет всем, я Лекс, Лекс, который любит издеваться над Суперменом.
В прошлый раз мы использовали Python для чтения информации GPS о фотографии, мы можем получить время съемки, модель мобильного телефона и другую информацию, а также мы можем
Точное местоположение места съемки. Java выражает недовольство~~~
Сегодняшняя тема: используйте Java для считывания времени съемки фотографии, местоположения по GPS, модели мобильного телефона и другой информации.
Шаг за шагом, чтобы реализовать функцию, в конце статьи есть полный исходный код [рекомендуемая коллекция]
Вот в чем дело
В последний раз, когда я использовал python, чтобы найти фотографию с помощью GPS, чтобы решить дело, следующим образом ↓ ↓ ↓
Решил сегодня показать свое истинное лицо
На лучшем в мире языке - Java (можно распылять)
реализовать эту функцию
Функции кратко описаны следующим образом:
Анализируйте фотографии с помощью сценариев и GPS-местоположения, где были сделаны фотографии.
Кроме того, вы также можете получить такую информацию, как время съемки, модель мобильного телефона и так далее.
первый эффект
Случайно нашел фото, присланное красивой женщиной из группы WeChat
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}}
эммм, нехорошо много описывать
Метод реализации Java
1. Импорт связанных пакетов jar
Здесь необходимо ввести два пакета jar, чтобы прочитать exif-информацию о фотографии, которая содержит полную информацию о фотографии.
Загрузка ресурса находится в конце.
2. Прочитайте исходную информацию Exif
Сначала используйте инструмент пакета jar,
Прочтите исходную информацию Exif на фото.
Полный код выглядит следующим образом:
public static HashMap<String, Object> readPicInfo(String file_path) {
HashMap<String, Object> map = new HashMap<String,Object>();
Tag tag = null;
File jpegFile = new File(file_path);
Metadata metadata;
try {
metadata = JpegMetadataReader.readMetadata(jpegFile);
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();
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, время съемки, пиксели, дата модификации
Он даже включает информацию о высоте места съемки.
3. Преобразование формата GPS
Информация GPS, которую мы читаем через exif, имеет формат, аналогичный градусам, минутам и секундам.
Нам нужно преобразовать информацию GPS в десятичные цифры путем вычисления,
Таким образом, вы можете вызвать API карты Baidu или другой 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;
}
С помощью этой функции мы преобразуем информацию о широте и долготе в информацию о десятичных числах.
4. Вызовите API карты, чтобы преобразовать координаты GPS в географическое местоположение.
Мы получаем строку чисел географических координат через исходную информацию exif.
Если вы хотите преобразовать его в конкретную адресную информацию, вам необходимо преобразовать его с помощью основных API карт.
Друзья могут бесплатно зарегистрировать API карты Baidu, а затем вызвать предоставленный им интерфейс,
Входящее значение GPS-координат можно преобразовать в адресную информацию. Конечно, мой также может быть использован здесь.
Метод интерфейса вызывается следующим образом:
//接口调用方法如下:
//api_key:是你注册的key值
//coords:是你的经纬度坐标
http://api.map.baidu.com/reverse_geocoding/v3/?ak="+api_key+"&output=json&coordtype=wgs84ll&location="+coords
5. Полный код
Наконец, соберите код.
Сделал простой java небольшой проект
Есть среда java, вы можете запустить ее~~
Скрытая сила и слава~~