来自pil对象的md5

Art*_*yom 9 python md5 python-imaging-library

如何在不保存到文件的情况下获取pil对象的md5?

    imq.save('out.png')
    hash =  hashlib.md5(open('out.png','rb').read()).hexdigest()
Run Code Online (Sandbox Code Playgroud)

ale*_*ula 16

实际上有更简单的解决方案:

hashlib.md5(img.tostring()).hexdigest()
Run Code Online (Sandbox Code Playgroud)

  • 看起来.tostring()从2.0开始不推荐使用.tobytes() (8认同)

Pet*_*sen 5

将@ Ignacio的答案转换为代码,使用此答案来帮助:

import StringIO, hashlib

output = StringIO.StringIO()
img.save(output)
hash = hashlib.md5(output.getvalue()).hexdigest()
Run Code Online (Sandbox Code Playgroud)

正如引用的其他答案所指出的,如果PIL尝试自动检测输出格式,这可能会导致KeyError.要避免此问题,您可以手动指定格式:

img.save(output, format='GIF')
Run Code Online (Sandbox Code Playgroud)

(注意:我使用"img"作为变量,而不是我认为是"拼写错误"的"imq".)


Ign*_*ams 4

您可以将其写入 aStringIO中,然后获取其哈希值。