<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          520那天我被綠了...

          共 7422字,需瀏覽 15分鐘

           ·

          2021-06-03 02:58


          520是一年幾度的重要日子,青男俊女們?nèi)浅鰟?dòng),鮮花遍地,朋友圈也開啟了曬禮物大賽。

          在這個(gè)重要的日子里,大多數(shù)文章會(huì)教你如何送禮物,如何約會(huì),如何虐狗。我卻不一樣,我今天要教你如何識(shí)別海王,如何摘綠帽!

          真實(shí)案例

          一哥們在這天早早收班,下班就準(zhǔn)點(diǎn)溜了,準(zhǔn)備回家跟女友一起浪漫地渡過這個(gè)重要的夜晚。可誰料女朋友跟他說今晚要加班,可能會(huì)比較晚回家。哥們情緒有點(diǎn)低落,準(zhǔn)備回家打幾把王者。

          在回家的路上,他收到女朋友發(fā)來的一張自拍照,并且囑咐他要乖乖的在家等她回去。

          圖片來源于網(wǎng)絡(luò)

          這張照片(非原照片,看官們別想入非非!)看起來沒什么特別,沒什么背景,只有一個(gè)正臉照。但是這哥們在地鐵上端詳了許久,又聯(lián)想到女朋友平時(shí)很少加班,怎么恰巧今天這么特殊的日子需要加班?突然一個(gè)奇怪的想法冒出頭,該不會(huì)有隱情吧?

          他始終感覺有點(diǎn)不踏實(shí),又不想打電話問女朋友(這種詢問一般會(huì)讓女方認(rèn)為你不信任她),索性回家打開電腦,開始敲起代碼來。

          那么,他為什么要敲代碼呢?到底敲的是什么代碼呢?

          他的思路是這樣的,我們拍的照片一般都會(huì)附帶一些附加信息,比如照片的拍攝時(shí)間、拍攝地點(diǎn)等。那么我可以通過寫程序去讀取這些信息,然后看看拍攝地點(diǎn)是不是女朋友的公司,就可以知道她是否真的在公司加班了。

          代碼驗(yàn)證

          首先,他獲取到照片,存放在電腦的某個(gè)文件夾下。

          接著,安裝一個(gè) Python 的第三方庫 exifread

          pip3 install exifread

          這個(gè)庫的強(qiáng)大之處就是它可以直接讀取照片信息。主要是使用這個(gè)方法:

          tags = exifread.process_file(f)

          我們運(yùn)行一下,可以看到照片里面包含的很詳細(xì)的信息,有很多:

          具體實(shí)現(xiàn)程序:

          def extract_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)
                      # 經(jīng)度
                      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'] = convert_coor(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'] = convert_coor(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}

          從這里面,我們就可以獲取到照片拍攝的地點(diǎn)的經(jīng)緯度,這樣雖然說可以粗略地看出是在哪一塊。并不能看到具體的位置信息,如果想看到位置信息,那么第一種方法可以百度查找經(jīng)緯度,百度有提供坐標(biāo)反解成地點(diǎn)的功能。

          作為有追求的程序員,這樣做一方面有點(diǎn)“l(fā)ow逼”,另一方面總感覺一件事情只做了一半沒完成。所以我們肯定要用自動(dòng)反解的方法,才可以體現(xiàn)出優(yōu)越感。

          百度有開發(fā)者接口,可以自己去注冊一個(gè),成為百度地圖開發(fā)者,然后就可以調(diào)用 API 來反解坐標(biāo)了。

          具體的代碼如下:

          通過baidu Map的API將GPS信息轉(zhuǎn)換成地址

          def find_address_from_bd(GPS):
              secret_key = 'wLyevcXk5QY36hTKmvV5350F'
              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]
              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

          這里面需要將百度地圖開發(fā)者的 secret_key 放進(jìn)去就可以,上面是我的 key ,如果你不想麻煩,可以用我的試試。

          接下來,就是見證奇跡的時(shí)刻了,我們來看看程序運(yùn)行的結(jié)果:

          拍攝時(shí)間:2021:05:20 19:33:20
          照片拍攝地址:('湖北省武漢市洪山區(qū)雄楚大道1070''湖北省''武漢市''洪山區(qū)''立頓酒店-金俊花園東南130米')

          這哥們看到這個(gè)傻眼了,立馬去地圖上搜了一下,這跟他女朋友的公司還有好遠(yuǎn),這有極大概率是戴綠帽了...

          接下來的劇情咱就不說了,大家自己發(fā)揮想象吧!

          總結(jié)

          這世道,浮云太多,學(xué)會(huì) Python,你就擁有一雙火眼金睛,去洞察世間的萬事萬物。感情會(huì)存在背叛,Python 不會(huì),所以多學(xué)學(xué)使用 Python,你會(huì)慢慢地愛上它,這種愛悠遠(yuǎn)綿長!各位看官,別忙著敲代碼,先點(diǎn)個(gè)在看二連!

          end


          瀏覽 55
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲人成网77777色在线播放 | 人人妻人人操人人精品 | 日韩视频 中文字幕 | 北条麻妃熟女60分钟 | 中文电视剧字幕在线播放网站 |