當前位置:首頁 » 編程語言 » python3264

python3264

發布時間: 2024-09-18 03:31:46

① 使用python實時將gps返回的經緯度轉化為圖片

主要就是做了兩件事情:
1.生成一張有文本信息的JPG圖片
2.寫入EXIF信息

生成照片需要PIL和libjpeg

import Imageimport ImageDrawimport ImageFontdef create_pic(path, text=[], type='jpeg'):
img = Image.new("RGB", (2448, 3264), '#37b6ce')#顏色和大小
draw = ImageDraw.Draw(img)
font = ImageFont.truetype('ziti.ttf', 120)#ttf是字體,120是字型大小
for h in range(0, len(text)):#多行文本
draw.text((256, 256 + 120 * h), text[h], font=font)
img.save(path, type)#保存
# img.show()

讀寫EXIF信息需要pyexiv2,獲取google的經緯度需要geopy
順便說下經緯度的表示:
一般exif里看到的都是這樣的57°55'56.6",是度,分,秒這么展示的,google上獲取來的是十進制的57.9323888888888
所以需要轉換一下再寫進去
公式:57°55'56.6" =57+55/60+56.6/3600=57.9323888888888

etemplate=pyexiv2.ImageMetadata('IMG_4408.JPG')template.read()#exif信息很多,所以找個真正手機拍攝的照片當模版googlev3=geopy.GoogleV3()place,gps=googlev3.geocode(location)#獲取gps信息,location寫地名,比如『北京王府井』,偶爾會被牆,最好掛個代理defset_exif(path,date_time=None,gps=()):
"""
datetime=2014:10:0412:41:38
geo=(lat=39.12315,lng=115.12231)
"""
metadata=pyexiv2.ImageMetadata(path)
metadata.read()
forkintemplate.exif_keys:
metadata[k]=pyexiv2.ExifTag(k,template[k].value)
ifnotdate_time:
date_str=pyexiv2.utils.exif(date_time)
metadata['Exif.Photo.DateTimeOriginal']=date_str
metadata['Exif.Photo.DateTimeDigitized']=date_str
metadata['Exif.Image.DateTime']=date_str
iflen(geo)>0:
c_lat=decimal2coordinate(geo[0],['S','N'])
c_lng=decimal2coordinate(geo[1],['W','E'])
metadata["Exif.GPSInfo.GPSLatitude"]=coordinate2rational(c_lat[0],c_lat[1],c_lat[2])
metadata["Exif.GPSInfo.GPSLatitudeRef"]=c_lat[3]
metadata["Exif.GPSInfo.GPSLongitude"]=coordinate2rational(c_lng[0],c_lng[1],c_lng[2])
metadata["Exif.GPSInfo.GPSLongitudeRef"]=c_lng[3]
else:
metadata._delete_exif_tag("Exif.GPSInfo.GPSLatitude")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLatitudeRef")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLongitude")
metadata._delete_exif_tag("Exif.GPSInfo.GPSLongitudeRef")
metadata.write()defdecimal2coordinate(value,loc):
"""
loc=lat=>["S","N"],lng=>["W","E"]
retrunD,M,S,locate
"""
ifvalue<0:
loc_value=loc[0]
elifvalue>0:
loc_value=loc[1]
else:
loc_value=""
abs_value=abs(value)
deg=int(abs_value)
t1=(abs_value-deg)*60
min=int(t1)
sec=round((t1-min)*60,5)
return(deg,min,sec,loc_value)defcoordinate2rational(D,M,S):
return(fractions.Fraction(D,1),fractions.Fraction(int((M+S/60)*100),100),fractions.Fraction(0,1))
熱點內容
草人御魂怎麼配置 發布:2024-11-25 00:30:37 瀏覽:737
ftp上傳流程 發布:2024-11-25 00:18:27 瀏覽:89
安卓服光遇什麼時候上線的 發布:2024-11-25 00:13:22 瀏覽:918
80萬能買到酷路澤的什麼配置 發布:2024-11-25 00:10:57 瀏覽:336
新浪微博中如何修改密碼 發布:2024-11-25 00:10:52 瀏覽:100
iphone訪問pc 發布:2024-11-24 23:53:43 瀏覽:480
編譯不能顯示 發布:2024-11-24 23:40:52 瀏覽:698
人體編程 發布:2024-11-24 23:40:51 瀏覽:304
謎妹緩存的文件在哪 發布:2024-11-24 23:38:12 瀏覽:146
伺服器自動清理緩存 發布:2024-11-24 23:37:14 瀏覽:663