我的计算机上有一个文件夹,其中包含约数千个RGB 8位每通道图像文件,分辨率在2000x2000和8000x8000之间(因此它们中的大多数都非常大)。
我想为每个图像存储一些小的值,例如哈希值,以便将来有一个我可以轻松比较的值,以查看是否有任何图像文件已更改。该值的计算有三个主要要求:
我可以采用多种方法来解决此问题,例如sha1,md5等,但此处的真正目标是速度,实际上,这只是任何一种非常快速的方法来确定是否对某个对象进行了任何更改。图片。
您将如何在Python中实现这一目标?您是否建议使用特定的哈希算法来提高速度?还是可以设计出一种完全实现我的三个目标的方法?
答案 0 :(得分:1)
- 此值的计算需要快速
- 如果图像文件的任何部分发生更改(即使是很小的变化,即使仅改变一个像素),结果也必须有所不同。 (哈希不应该考虑文件名)。
- 基本上不应该发生冲突。
never
除外)。这就是hash algorithms
第一个示例(优化算法),
(可选)在检查散列之前,您可以部分地计算和比较散列,而不是所有文件。
如果大多数文件可能会有所不同,那么在计算散列值之前检查其他内容可能会更快。
但是,如果您的大多数文件都相同,那么散列之前的步骤只会消耗更多时间。因为您已经必须计算大多数文件的哈希值。
因此请尝试根据您的情况实施最有效的算法。