首页 > 其他 > 详细

01_照片分析

时间:2021-05-12 10:08:11      阅读:15      评论:0      收藏:0      [点我收藏+]
import exifread
import re
import json
import requests
import os
 
#转换经纬度格式
def latitude_and_longitude_convert_to_decimal_system(*arg):
    """
    经纬度转为小数, param arg:
    :return: 十进制小数
    """
    return float(arg[0]) + ((float(arg[1]) + (float(arg[2].split(/)[0]) / float(arg[2].split(/)[-1]) / 60)) / 60)
 
#读取照片的GPS经纬度信息
def find_GPS_image(pic_path):
    GPS = {}
    date = ‘‘
    with open(pic_path, rb) as f:
        tags = exifread.process_file(f)
        for tag, value in tags.items():
            #纬度
            if re.match(GPS GPSLatitudeRef, tag):
                GPS[GPSLatitudeRef] = str(value)
            #经度
            elif re.match(GPS GPSLongitudeRef, tag):
                GPS[GPSLongitudeRef] = str(value)
            #海拔
            elif re.match(GPS GPSAltitudeRef, tag):
                GPS[GPSAltitudeRef] = str(value)
            elif re.match(GPS GPSLatitude, tag):
                try:
                    match_result = re.match(\[(\w*),(\w*),(\w.*)/(\w.*)\], str(value)).groups()
                    GPS[GPSLatitude] = int(match_result[0]), int(match_result[1]), int(match_result[2])
                except:
                    deg, min, sec = [x.replace( , ‘‘) for x in str(value)[1:-1].split(,)]
                    GPS[GPSLatitude] = latitude_and_longitude_convert_to_decimal_system(deg, min, sec)
            elif re.match(GPS GPSLongitude, tag):
                try:
                    match_result = re.match(\[(\w*),(\w*),(\w.*)/(\w.*)\], str(value)).groups()
                    GPS[GPSLongitude] = int(match_result[0]), int(match_result[1]), int(match_result[2])
                except:
                    deg, min, sec = [x.replace( , ‘‘) for x in str(value)[1:-1].split(,)]
                    GPS[GPSLongitude] = latitude_and_longitude_convert_to_decimal_system(deg, min, sec)
            elif re.match(GPS GPSAltitude, tag):
                GPS[GPSAltitude] = str(value)
            elif re.match(.*Date.*, tag):
                date = str(value)
    return {GPS_information: GPS, date_information: date}
 
#通过baidu Map的API将GPS信息转换成地址。
def find_address_from_GPS(GPS):
    """
    使用Geocoding API把经纬度坐标转换为结构化地址。
    :param GPS:
    :return:
    """
    secret_key = zbLsuDDL4CS2U0M4KezOZZbGUY9iWtVf
    if not GPS[GPS_information]:
        return 该照片无GPS信息
    lat, lng = GPS[GPS_information][GPSLatitude], GPS[GPS_information][GPSLongitude]
    baidu_map_api = "http://api.map.baidu.com/geocoder/v2/?ak={0}&callback=renderReverse&location={1},{2}s&output=json&pois=0".format(
        secret_key, lat, lng)
    response = requests.get(baidu_map_api)
    content = response.text.replace("renderReverse&&renderReverse(", "")[:-1]
    print(content)
    baidu_map_address = json.loads(content)
    formatted_address = baidu_map_address["result"]["formatted_address"]
    province = baidu_map_address["result"]["addressComponent"]["province"]
    city = baidu_map_address["result"]["addressComponent"]["city"]
    district = baidu_map_address["result"]["addressComponent"]["district"]
    location = baidu_map_address["result"]["sematic_description"]
    return formatted_address,province,city,district,location
if __name__ == __main__:
    GPS_info = find_GPS_image(pic_path=C:/Users/pacer/desktop/img/5.jpg)
    address = find_address_from_GPS(GPS=GPS_info)
    print("拍摄时间:" + GPS_info.get("date_information"))
    print(照片拍摄地址: + str(address))

 

01_照片分析

原文:https://www.cnblogs.com/luwei0915/p/14758247.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!