最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)獲取照片的地理定位信息

 更新時間:2023年05月07日 10:10:09   作者:winfredzhang  
這篇文章主要為大家詳細(xì)介紹了如何使用 Python 的 PIL(Python Imaging Library)庫實現(xiàn)從 JPEG 圖像中獲取經(jīng)緯度信息,需要的可以參考一下

一、步驟

要從 JPEG 圖像中獲取經(jīng)緯度信息,可以使用 Python 的 PIL(Python Imaging Library)庫。以下是一個示例代碼,用于從 JPEG 圖像中獲取經(jīng)緯度信息并打印出來:

二、源代碼

from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
 
def get_exif_data(image_path):
    """
    獲取 JPEG 圖像的 EXIF 數(shù)據(jù)
    """
    exif_data = {}
    with Image.open(image_path) as img:
        if hasattr(img, '_getexif'):
            # 獲取所有 EXIF 標(biāo)簽
            for tag, value in img._getexif().items():
                if tag in TAGS:
                    exif_data[TAGS[tag]] = value
            # 獲取 GPSInfo 標(biāo)簽
            if 'GPSInfo' in exif_data:
                # 解析 GPSInfo 標(biāo)簽中的子標(biāo)簽
                gps_data = {}
                for gps_tag in exif_data['GPSInfo'].keys():
                    tag_name = GPSTAGS.get(gps_tag, gps_tag)
                    gps_data[tag_name] = exif_data['GPSInfo'][gps_tag]
                exif_data['GPSInfo'] = gps_data
    return exif_data
 
def get_gps_info(exif_data):
    """
    從 EXIF 數(shù)據(jù)中提取經(jīng)緯度信息
    """
    gps_info = {}
    if 'GPSInfo' in exif_data:
        # 獲取經(jīng)度
        lat = exif_data['GPSInfo']['GPSLatitude']
        lat_ref = exif_data['GPSInfo']['GPSLatitudeRef']
        # lat_degrees = lat[0][0] / float(lat[0][1])
        lat_degrees = lat[0].numerator / float(lat[0].denominator)
        # lat_minutes = lat[1][0] / float(lat[1][1])
        lat_minutes = lat[1].numerator / float(lat[1].denominator)        
        # lat_seconds = lat[2][0] / float(lat[2][1])
        lat_seconds = lat[2].numerator / float(lat[2].denominator)
        lat_direction = lat_ref
        gps_info['latitude'] = (lat_degrees + (lat_minutes / 60.0) + (lat_seconds / 3600.0)) * (-1 if lat_direction == 'S' else 1)
        
 
        # 獲取緯度
        lon = exif_data['GPSInfo']['GPSLongitude']
        lon_ref = exif_data['GPSInfo']['GPSLongitudeRef']
        # lon_degrees = lon[0][0] / float(lon[0][1])
        lon_degrees = lon[0].numerator / float(lon[0].denominator)
        # lon_minutes = lon[1][0] / float(lon[1][1])
        lon_minutes = lon[1].numerator / float(lon[1].denominator)
        # lon_seconds = lon[2][0] / float(lon[2][1])
        lon_seconds = lon[2].numerator / float(lon[2].denominator)
        lon_direction = lon_ref
        gps_info['longitude'] = (lon_degrees + (lon_minutes / 60.0) + (lon_seconds / 3600.0)) * (-1 if lon_direction == 'W' else 1)
    return gps_info
 
# 測試代碼
if __name__ == '__main__':
    image_path = r'D:\spiderdocs\FtpServer\IMG_20230302_134126.jpg'    
    # 修改為你自己的 JPEG 圖像路徑
    exif_data = get_exif_data(image_path)
    gps_info = get_gps_info(exif_data)
    print('經(jīng)度:', gps_info['longitude'])
    print('緯度:', gps_info['latitude'])

三、代碼說明

在上述代碼中,我們使用了 if hasattr(img, '_getexif'): 來檢查圖片是否包含 EXIF 數(shù)據(jù)。如果包含,就將獲取到的 EXIF 數(shù)據(jù)保存在 exif_data 變量中。然后再使用 if exif_data is None: 來檢查 exif_data 是否為 None。如果是,就說明圖片沒有 EXIF 數(shù)據(jù),打印一條消息并返回一個空字典。否則,將 EXIF 數(shù)據(jù)轉(zhuǎn)換為字典格式并返回。 

四、報錯1

Traceback (most recent call last):
  File "d:\spiderdocs\jpegexifgps.py", line 53, in <module>
    exif_data = get_exif_data(image_path)
  File "d:\spiderdocs\jpegexifgps.py", line 12, in get_exif_data
    for tag, value in img._getexif().items():
AttributeError: 'NoneType' object has no attribute 'items'

五、解決方法1

出現(xiàn)這種情況的原因可能是文件中沒有 EXIF 數(shù)據(jù)或者圖片格式不支持 EXIF 數(shù)據(jù)。為了避免出現(xiàn)這種錯誤,您可以在調(diào)用 _getexif() 方法之前,先檢查一下是否存在 _getexif() 方法和返回的 EXIF 數(shù)據(jù)是否為 None。如果是 None,則說明該圖片沒有 EXIF 數(shù)據(jù),需要相應(yīng)地處理。

1.打開手機的相機應(yīng)用,進入相機設(shè)置。

2.找到 “地理標(biāo)記” 或者 “位置信息” 這個選項,打開它。

3.確保允許相機應(yīng)用訪問位置信息。在有些手機上,您需要在設(shè)置中打開相機應(yīng)用的位置權(quán)限。

4.如果您希望在每次拍照時都保存經(jīng)緯度信息,可以選擇“始終使用”或“啟用”選項。如果您只想在需要時保存位置信息,可以選擇“詢問每次”選項。

5.拍攝照片時,手機會自動獲取當(dāng)前位置的經(jīng)緯度信息,并將其保存在照片的 EXIF 數(shù)據(jù)中。您可以使用一些工具或軟件來讀取照片的 EXIF 數(shù)據(jù),并提取經(jīng)緯度信息。

請注意,啟用位置信息會對手機的電池壽命產(chǎn)生一定影響。如果您不需要在拍照時保存經(jīng)緯度信息,建議關(guān)閉位置信息功能,以延長手機的電池壽命。

六、報錯2

Traceback (most recent call last):
  File "d:\spiderdocs\jpegexifgps.py", line 57, in <module>
    gps_info = get_gps_info(exif_data)
  File "d:\spiderdocs\jpegexifgps.py", line 34, in get_gps_info
    lat_degrees = lat[0][0] / float(lat[0][1])
TypeError: 'IFDRational' object is not subscriptable

七、解決方法2

這個錯誤是因為在讀取經(jīng)緯度信息時,使用了 IFDRational 類型的對象來進行下標(biāo)操作,而 IFDRational 類型并不支持下標(biāo)操作。

建議檢查代碼中讀取經(jīng)緯度信息的部分,并確保使用正確的數(shù)據(jù)類型進行操作。您可以嘗試使用 numerator 和 denominator 屬性來獲取 IFDRational 類型對象的值,例如:

類似地,您也可以使用 longitude[0].numerator 和 longitude[0].denominator 來獲取經(jīng)度的度數(shù)。

lat_degrees = lat[0].numerator / float(lat[0].denominator)

八、效果如下所示

九、驗證效果如下

1)打開:拾取坐標(biāo)系統(tǒng)

2)輸入框中輸入:坐標(biāo)(如:120.39987897666663,30.128810976666666)

注意:勾選“坐標(biāo)反查”。

到此這篇關(guān)于Python實現(xiàn)獲取照片的地理定位信息的文章就介紹到這了,更多相關(guān)Python獲取照片地理定位信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • opencv-python基本圖像處理詳解

    opencv-python基本圖像處理詳解

    這篇文章主要介紹了Python Opencv圖像處理基本操作代碼詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-08-08
  • python 順時針打印矩陣的超簡潔代碼

    python 順時針打印矩陣的超簡潔代碼

    今天小編就為大家分享一篇python 順時針打印矩陣的超簡潔代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • python中封裝token問題

    python中封裝token問題

    這篇文章主要介紹了python中封裝token問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python turtle庫畫一個方格和圓實例

    python turtle庫畫一個方格和圓實例

    在本篇文章里小編給大家分享了關(guān)于python中用turtle庫畫一個方格和圓實例和相關(guān)代碼,需要的朋友們可以學(xué)習(xí)參考下。
    2019-06-06
  • Django框架表單操作實例分析

    Django框架表單操作實例分析

    這篇文章主要介紹了Django框架表單操作,結(jié)合實例形式分析了Django框架表單數(shù)據(jù)發(fā)送、請求相關(guān)操作技巧與注意事項,需要的朋友可以參考下
    2019-11-11
  • python獲取Linux下文件版本信息、公司名和產(chǎn)品名的方法

    python獲取Linux下文件版本信息、公司名和產(chǎn)品名的方法

    這篇文章主要介紹了python獲取Linux下文件版本信息、公司名和產(chǎn)品名的方法,主要涉及了pefile模塊的用法,需要的朋友可以參考下
    2014-10-10
  • 如何使用Python中的正則表達式處理html文件

    如何使用Python中的正則表達式處理html文件

    html類型的文本數(shù)據(jù)內(nèi)容是由前端代碼書寫的標(biāo)簽+文本數(shù)據(jù)的格式,可以直接在chrome瀏覽器打開,清楚的展示出文本的格式,下面這篇文章主要給大家介紹了關(guān)于如何使用Python中的正則表達式處理html文件的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • python腳本實現(xiàn)查找webshell的方法

    python腳本實現(xiàn)查找webshell的方法

    這篇文章主要介紹了python腳本實現(xiàn)查找webshell的方法,是很實用的一個功能,需要的朋友可以參考下
    2014-07-07
  • 詳解python中的Turtle函數(shù)庫

    詳解python中的Turtle函數(shù)庫

    這篇文章主要介紹了python中的Turtle函數(shù)庫,包括函數(shù)庫的引用方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • 舉例區(qū)分Python中的淺復(fù)制與深復(fù)制

    舉例區(qū)分Python中的淺復(fù)制與深復(fù)制

    這篇文章主要介紹了舉例區(qū)分Python中的淺復(fù)制與深復(fù)制,是Python入門學(xué)習(xí)中的重要知識,需要的朋友可以參考下
    2015-07-07

最新評論

江安县| 荥经县| 民勤县| 渝北区| 威宁| 宁武县| 宁武县| 皮山县| 北流市| 兴和县| 台北县| 茂名市| 岚皋县| 上杭县| 天祝| 万安县| 寿光市| 吉木萨尔县| 银川市| 漳平市| 宁都县| 邛崃市| 策勒县| 宜宾市| 万盛区| 苍梧县| 辉县市| 吉水县| 陈巴尔虎旗| 延津县| 阜阳市| 积石山| 姚安县| 申扎县| 沧源| 蕲春县| 信丰县| 广西| 苗栗市| 潢川县| 顺义区|