• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    女友半夜加班发自拍 python男友用30行代码发现惊天秘密

    事情是这样的

    正准备下班的python开发小哥哥

    接到女朋友今晚要加班的电话

    并给他发来一张背景模糊的自拍照

    如下 ↓ ↓ ↓

    敏感的小哥哥心生疑窦,难道会有原谅帽

    然后python撸了一段代码 分析照片

    分析下来 emmm

    拍摄地址居然在 XXX酒店

    小哥哥崩溃之余 大呼上当

    python分析照片

    小哥哥将发给自己的照片原图下载下来

    并使用python写了一个脚本

    读取到了照片拍摄的详细的地址

    详细到了具体的街道和酒店名称

    引入exifread模块

    首先安装python的exifread模块,用于照片分析

    pip install exifread 安装exfriead模块

    PS C:\WINDOWS\system32> pip install exifread
    Collecting exifread
      Downloading ExifRead-2.3.2-py3-none-any.whl (38 kB)
    Installing collected packages: exifread
    Successfully installed exifread-2.3.2
    PS C:\WINDOWS\system32> pip install json

    GPS经纬度信息

    其实我们平时拍摄的照片里,隐藏了大量的私密信息

    包括 拍摄时间、极其精确 具体的GPS信息。

    下面是通过exifread模块,来读取照片内的经纬度信息。

    #读取照片的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}

    百度API将GPS转地址

    这里需要使用调用百度API,将GPS经纬度信息转换为具体的地址信息。

    这里,你需要一个调用百度API的ak值,这个可以注册一个百度开发者获得,

    当然,你也可以使用博主的这个ak

    调用之后,就可以将拍摄时间、拍摄详细地址都解析出来。

    def find_address_from_GPS(GPS):
        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=renderReverselocation={1},{2}soutput=jsonpois=0".format(
            secret_key, lat, lng)
        response = requests.get(baidu_map_api)
        #百度API转换成具体的地址
        content = response.text.replace("renderReverserenderReverse(", "")[:-1]
        print(content)
        baidu_map_address = json.loads(content)
        #将返回的json信息解析整理出来
        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:/女友自拍.jpg')
        address = find_address_from_GPS(GPS=GPS_info)
        print("拍摄时间:" + GPS_info.get("date_information"))
        print('照片拍摄:' + str(address))

    Python小哥得到的结果是这样的

    照片拍摄地址:('云南省XXXXXXX县', '云南省', 'XXXX市', 'XXX县', 'XXXX酒店')

    云南弥勒XXXX酒店,这明显不是老王女友工作的地方

    小哥哥搜索了一下,这是一家温泉度假酒店。

    顿时就明白了

    完整代码:点此下载

    到此这篇关于女友半夜加班发自拍 python男友用30行代码发现惊天秘密的文章就介绍到这了,更多相关python读取GPS内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 详解python中文编码问题
    • 用基于python的appium爬取b站直播消费记录
    • 前女友发来加密的"520快乐.pdf",我用python破解开之后,却发现
    • 在前女友婚礼上用python把婚礼现场的WIFI名称改成了
    上一篇:python数据结构的排序算法
    下一篇:女神相册密码忘记了 我只用Python写了20行代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    女友半夜加班发自拍 python男友用30行代码发现惊天秘密 女友,半夜,加班,发,自拍,