获取哈希时忽略图像名称

Ignore image name while getting hash

我正在编写一个程序,它将获取图像作为输入,将其与数据库中的图像进行核对,并使用相同的哈希值输出图像

但是,当使用 hash("imagepath") 2 个相同的图像时,即使唯一的区别是图像的名称,也会给出不同的哈希值,这让我相信名称是问题所在

有没有办法轻松忽略图片的名字? (png)

我是怎么解决的: 我最终没有使用“散列”,而是通过将代码段加扰在一起来使用平均像素,然后找到具有相同平均像素的图像(平均像素在列表中,因此它获得索引,然后用它来查找名称)

import requests

#Database of possible image average pixels
clone_imgs = [88.0465, 46.2568, 102.6426 ...]

image = <image url>
img_data = requests.get(image).content
with open('image.png', 'wb') as handler: #Download the image as "image.png" (Replace "image.png" with the path where you want to save it)
    handler.write(img_data)
img = Image.open(r"image.png") #Open the image for reading
img = img.resize((100, 100), Image.ANTIALIAS) #A series of compressions to the image
img = img.convert("L")
img_pixel_data = list(spawn.getdata())
img_avg_pixel = sum(spawn_pixel_data)/len(spawn_pixel_data) #Get the average pixel values

clone_img_index = clone_imgs.index(img_avg_pixel) #Find the same pixel value in the database

这对我有用,但有一些缺点:

  1. 图片的颜色需要 100% 相同(一个像素的偏差可能会毁掉它)
  2. 这些平均像素中的一个可以制作无限数量的图像,我的数据库只包含 800,所以它仍然有效(但是我不得不从压缩到 10x10 到 100x100,以免最终出现克隆)