Exif информация, приобретенная фотографии (съемка доступа устройств к информации, времени, места и т.д.) с питоном

Первый шаг: установить

пункт установить exifread

 

Вторая часть: Кодекс

Импорт exifread
 Импорт запросов
 класса PhotoExifInfo ():
     DEF  __init__ (Self, photo_path): 
        self.photo_path = photo_path 
        self.baidu_map_ak = " " 

    DEF get_tags (Self):
         "" " Получить фотографии Информация " "" 
        image_content = Open (self.photo_path , ' гь ' ) 
        Метки = exifread.process_file (image_content)
         "" " 
        # получить фотографии обходов все информации 
        для J, K в tags.items (): 
            Print (J,к) 
        «»»


        # Печать фотографий и некоторая информация для 
        печати ( « время съемки: » Метки [ « EXIF Доли секунд оригинального времени » ])
         Печать ( « Производитель камеры: » Метки [ « Image Make » ])
         Печать ( « модель камеры: » Метки [ ' Модель Image ' ])
         Печать ( ' размер изображения: ' Метка [ ' EXIF ExifImageWidth ' ] Метка [ ' EXIF ExifImageLength ' ])

        image_content.close () 
        возвратные теги 

    Защита get_lng_lat (Я):
         "" " 经纬度转换""" 
        метка = self.get_tags ()
         попробуйте :
             # 纬度 
            LatRef = теги [ " GPS GPSLatitudeRef " ] .printable 
            Lat = теги [ " GPS GPSLatitude " ] .printable [1: -1] .Надеть ( "  " "" ) .Надеть ( " / " " , " ).сплит ( " ") 
            Шир = поплавок (лат [0]) + поплавок (лат [1]) / 60 + поплавок (лат [2]) / 3600
             , если LatRef =! " Н " : 
                Шир = Шир * (-1 )
             # 经度 
            LonRef = теги [ " GPS - GPSLongitudeRef " ] .printable 
            Lon = метки [ " GPS - GPSLongitude " ] .printable [1: -1] .Надеть ( "  " , "" ) .Надеть ( " / " , " " ) .split ( " ,") 
            Lon = поплавок (Lon [0]) + поплавок (Lon [1]) / 60 + поплавок (Lon [2]) / 3600
             , если LonRef =! " Е " : 
                Lon = Lon * (-1 )
             возвращение широта, долгота
         за исключением :
             печать ( ' Невозможно получить ' ) 

    защиту get_city_info (Я): 
        результат = self.get_lng_lat ()
         , если результат: 
            Lat, Lon = результат 
            URL = "http://api.map.baidu.com/reverse_geocoding/v3/?ak= " + self.baidu_map_ak + " и выход = & coordtype JSON = wgs84ll & местоположение = " + ул (лат) + ' ' + ул (Lon) 
            ответ = запросы. получить (URL) .json () 
            статус = ответа [ ' статус ' ]
             , если статус == 0: 
                адрес = ответ [ ' результат ' ] [ ' formatted_address ']
                 Обратный адрес
             еще:
                 Печать ( ' baidu_map ошибка ' ) , 

если  __name__ == ' __main__ ' : 
    результат = тест = PhotoExifInfo ( " IMG_20190918_080329.jpg " ) .get_city_info ()
     для печати ( " 拍摄地点: {} " .format (результат))

Примечание: интерфейс Baidu, чтобы преобразовать их широты и долготы могут пойти, чтобы применить

рекомендация

отwww.cnblogs.com/lvye001/p/11543889.html