网上下载了一个 Python2 脚本,其中有一句非常 pythonic ,本人水平理解不能
想请教下大家这段代码要如何修改才能在 Python3 中运行。
def avhash(img):
if not isinstance(img, Image.Image):
img = Image.open(img)
img = img.resize((8, 8), Image.ANTIALIAS).convert('L') #将 image 压缩为 8*8,转化为灰度图
avg = reduce(lambda x, y: x + y, img.getdata()) / 64. #对每个像素点的灰度累和,最后除以 64,得到灰度的平均值
return reduce(lambda x,(y,z): x | (z << y), enumerate(map(lambda i: 0 if i < avg else 1, img.getdata())), 0)
就是这句
reduce(lambda x,(y,z): x | (z << y), enumerate(map(lambda i: 0 if i < avg else 1, img.getdata())), 0)
目前直接运行会报错,错误信息如下
