【发布时间】:2014-08-13 18:21:36
【问题描述】:
我正在尝试从下载的图像中读取 Exif 数据。我在一个函数中将图像保存到我的计算机,然后尝试在另一个函数中读取数据,但我不断收到错误模式错误。我已经能够从预先保存的图像中读取数据并且只使用了 ._getexif() 但是当我尝试对我下载的图像做同样的事情时它不起作用。我做错了什么?
这是调用这两个函数的循环。
else:
imgTags = findImages(url)
for imgTag in imgTags:
imgFileName = downloadImage(imgTag)
testForExif(imgFileName)
从页面中查找和下载图片
def findImages(url):
print '[*] Finding images on ' + url
urlContent = urllib2.urlopen(url).read()
soup = BeautifulSoup(urlContent)
imgTags = soup.findAll('img')
return imgTags
def downloadImage(imgTag):
try:
print '[+] Downloading image...'
imgSrc = imgTag['src']
imgContent = urllib2.urlopen(imgSrc).read()
imgFileName = basename(urlsplit(imgSrc)[2])
imgFile = open(imgFileName, 'wb')
imgFile.write(imgContent)
imgFile.close()
return imgFileName
except:
return ''
读取exif数据
def testForExif(imgFileName):
exifData = {}
imgFile = Image.open(imgFileName, 'rb')
info = imgFile._getexif()
print '\n\n' + str(info) + '\n\n'
if info:
for (tag, value) in info.items():
decoded = TAGS.get(tag, tag)
exifData[decoded] = value
exifGPS = exifData['GPSInfo']
if exifGPS:
print '[+] ' + imgFileName + ' contains GPS MetaData'
我相信“坏模式”错误是在 testsForExif 函数中触发的,位于前几行的某处。它永远不会出现在第一个打印语句中。
我得到的确切错误是。
ValueError:错误模式
Traceback(最近一次调用最后一次):文件 “C:\Users\HeyNow\Downloads\Python\Cookbook\Forensics\metaurl.py”,行 59,在 main() 文件“C:\Users\HeyNow\Downloads\Python\Cookbook\Forensics\metaurl.py”,行 56,主要是 testForExif(imgFileName) 文件“C:\Users\HeyNow\Downloads\Python\Cookbook\Forensics\metaurl.py”,行 31、在testForExif中 imgFile = Image.open(imgFileName, 'rb') 文件“C:\Python27\lib\site-packages\PIL\Image.py”,第 1947 行,打开 raise ValueError("bad mode") ValueError: bad mode
通过玩它我也得到了一个。
坏模式'rb',文件名;
还有错误。
我迷路了。
编辑:如果我改变:
imgFile = Image.open(imgFileName, 'rb')
到
imgFile = Image.open(imgFileName)
我得到AttributeError: _getexif()
追溯:
Traceback(最近一次调用最后一次):文件“C:\Users\HeyNow\Downloads\Python\Cookbook\Forensics\metaurl.py”,行 59,在 main() 文件“C:\Users\HeyNow\Downloads\Python\Cookbook\Forensics\metaurl.py”,行 56,主要是 testForExif(imgFileName) 文件“C:\Users\HeyNow\Downloads\Python\Cookbook\Forensics\metaurl.py”,行 32、在testForExif中 info = imgFile._getexif() 文件“C:\Python27\lib\site-packages\PIL\Image.py”,第 512 行,在 getattr 中 raise AttributeError(name) AttributeError: _getexif
【问题讨论】:
-
请始终包含回溯
-
你的图片类型是什么? png 图像没有 exif 数据
标签: python python-imaging-library exif