从PIL对象获取md5
我该怎么获取PIL对象的MD5值,而不需要先把它保存到文件里呢?
imq.save('out.png')
hash = hashlib.md5(open('out.png','rb').read()).hexdigest()
4 个回答
4
你可以先把它写入一个叫做 StringIO
的东西,然后再对这个内容进行哈希处理。
5
把@Ignacio的回答变成代码,使用了这个回答来帮助:
import StringIO, hashlib
output = StringIO.StringIO()
img.save(output)
hash = hashlib.md5(output.getvalue()).hexdigest()
正如引用的其他回答所提到的,如果PIL(Python图像库)尝试自动检测输出格式,这可能会导致一个叫做KeyError的错误。为了避免这个问题,你可以手动指定格式:
img.save(output, format='GIF')
(注意:我用了“img”作为变量名,而不是你提到的“imq”,我猜那是个打字错误。)
17
其实有更简单的解决办法:
hashlib.md5(img.tostring()).hexdigest()