Как использовать фото для GPS-позиционирования? - Лучший язык Java настолько прост в реализации

Java задняя часть

«Эта статья участвовала в мероприятии Haowen Convocation Order, щелкните, чтобы просмотреть:Двойные заявки на внутреннюю и внешнюю стороны, призовой фонд в 20 000 юаней ждет вас, чтобы бросить вызов!"

Привет всем, я Лекс, Лекс, который любит издеваться над Суперменом.

В прошлый раз мы использовали Python для чтения информации GPS о фотографии, мы можем получить время съемки, модель мобильного телефона и другую информацию, а также мы можем

Точное местоположение места съемки. Java выражает недовольство~~~

Сегодняшняя тема: используйте Java для считывания времени съемки фотографии, местоположения по GPS, модели мобильного телефона и другой информации.

Шаг за шагом, чтобы реализовать функцию, в конце статьи есть полный исходный код [рекомендуемая коллекция]

Вот в чем дело

В последний раз, когда я использовал python, чтобы найти фотографию с помощью GPS, чтобы решить дело, следующим образом ↓ ↓ ↓

Подруга работает сверхурочно посреди ночи, чтобы отправить селфи. Парень-питон раскрывает шокирующую тайну с помощью 30 строк кода

Решил сегодня показать свое истинное лицо

На лучшем в мире языке - 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, вы можете запустить ее~~

Скрытая сила и слава~~