使用PHP检查图像是否唯一的最佳方法是什么?假设我有一个大约30张图像的目录(大约500 * 500像素),有人上传了另一张图片,检查上传的图像是否还没有在目录中的好方法是什么?
是否有某种方法来创建可以轻松比较的图像哈希值?然后我可以保存目录中图像的哈希值,并将它们与上传图像的哈希值进行比较。
计算能力不是问题,它不必每分钟处理多张图片。事实上,具有一个像素差异的图像将被视为不同的图像。系统应该能够过滤掉完全相同的图像。
答案 0 :(得分:6)
答案 1 :(得分:5)
run a checksum on the file ..如果它与您已经拥有的那个匹配,那么它可能是完全相同的图像。
答案 2 :(得分:3)
系统应该能够 过滤出精确的图像 同样的。
在这种情况下,您可以简单地忘记您正在谈论图像并将它们视为二进制文件,使用hash_file()
来创建哈希。
当然,这也会导致图像的不同哈希值仅在元数据中有所不同,例如JPEG图像中的EXIF注释。你必须决定这对你来说是否有问题。
答案 3 :(得分:2)
即使像ID3标签这样的小细节发生了变化,文件的字节比较也会失败。要比较图片内容,您必须打开图像文件并创建实际图像像素数据的哈希值。但是,即使这样也可以通过两次保存JPEG文件而质量水平略有不同来解决 - 细微的编码差异会导致像素颜色值发生变化。
因此,如果您真的希望在格式和质量上匹配图像内容,那么您将打开一大堆蠕虫:)
答案 4 :(得分:1)
快速回答,但我建议采用这种方法:
否则,请将哈希值保存在这样的平面文件中:
68b329da9893e34099c7d8ad5cb9c940 file2.bmp da1e100dc9e7bebb810985e37875de38 file1.jpg