我是新来问问题的,我希望这些信息是你所需要的一切,以正确理解问题。提前感谢您抽出时间回答这个问题。在
ENV:Python 2.7.6, 枕头3.4.2, 第1.0.8页
我有一个小脚本将一个映像从basex64转换成映像文件;在执行数组的for循环时,映像被正确地保存在服务器上
# write decoded image from base to jpg, works perfectly
fh = open(image_name_location, "wb")
fh.write(decodestring(image_src))
fh.close()
在这之后,我希望相同的图像在exif中插入gps和日期信息,因此为此我使用PIL和piexif;我使用PIL来跟踪当前的exif和piexif来将新数据插入到图像的exif中
^{pr2}$错误是,无论我做什么,以及我试图获取EXIF current dict,它都将返回NULL
有人知道吗?需要指出的是,在现有的图像上,当它们被加载到html中之后,这个脚本可以很好地工作,但是由于某些原因,在制作图像时却没有这样做。在
我更改并添加了以下代码以获取exif:
try:
exif_dict = piexif.load(im.info["exif"])
#insert new information for gps and date
exif_dict['GPS']['Latitude']= str(image_gps.split(',')[0])
exif_dict['GPS']['Longitude']= str(image_gps.split(',')[1])
exif_dict['0th']['Date and time (digitized)']= datetime.datetime.strptime(image_date, '%d/%m/%Y %H:%M').strftime("%Y:%m:%d %H:%M:%S")
#close the image from memory
im.close()
except:
#create clean exif info for new image if none detected
zeroth_ifd = {piexif.ImageIFD.Make: "Image maker",
piexif.ImageIFD.Software: "software here"
}
exif_ifd = {piexif.ExifIFD.DateTimeOriginal: datetime.datetime.strptime(image_date, '%d/%m/%Y %H:%M').strftime("%Y:%m:%d %H:%M:%S"),
piexif.ExifIFD.DateTimeDigitized: datetime.datetime.now().strftime("%Y:%m:%d %H:%M:%S")
}
gps_ifd = {piexif.GPSIFD.GPSVersionID: (2, 0, 0, 0),
piexif.GPSIFD.GPSAltitudeRef: 1,
piexif.GPSIFD.GPSLatitude: float(Fraction(str(image_gps.split(',')[0]))),
piexif.GPSIFD.GPSLongitude: float(Fraction(str(image_gps.split(',')[1])))
}
exif_dict = {"0th":zeroth_ifd, "Exif":exif_ifd, "GPS":gps_ifd}
这解决了零误差,因为它有exif clean if none,但是现在我得到了把gps数据从float转换成touple时的piexif错误??在
最后的解决方案是,如果没有exif,那么pilexif库很难检索到任何关于exif的信息,但是piexif库的工作原理非常出色,如果没有找到exif,甚至会创建一个空的exif。
添加以下代码以替换exif计算:
还使用了这个库https://pypi.python.org/pypi/LatLon/1.0.2从lat,lon google格式获得坐标,到度,分,秒,参考,并根据这本书的GPS Touple格式说明应用:http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf
这是值得的:p
相关问题 更多 >
编程相关推荐