代码之家  ›  专栏  ›  技术社区  ›  Pim Jager

使用PHP检查图像是否唯一的好方法是什么?

  •  2
  • Pim Jager  · 技术社区  · 15 年前

    5 回复  |  直到 15 年前
        1
  •  6
  •   Scott Evernden    15 年前

    run a checksum on the file .. 如果它与你已经拥有的一个相匹配,那么它可能是相同的图像。

        2
  •  7
  •   hsz    15 年前

    使用 md5 sha1

        3
  •  4
  •   NullUserException Mark Roddy    13 年前

    系统应该能够 过滤掉那些非常真实的图像

    在这种情况下,您可以简单地忘记您谈论的是图像,而只是将它们作为二进制文件,使用 hash_file() 创建散列。

    当然,这也会导致图像的哈希值不同,这些图像仅在元数据(如JPEG图像中的EXIF注释)上有所不同。你必须决定这是否是你的问题。

        4
  •  2
  •   Pekka    15 年前

    即使像ID3标记这样的小细节发生了变化,文件的字节级比较也会失败。要比较图片内容,必须打开图像文件并创建实际图像像素数据的散列。但即使这样,也可以通过保存(比如)两次质量稍有不同的JPEG文件来撤销——细微的编码差异将导致像素颜色值的变化。

    所以,如果你真的想匹配图像 跨越格式和质量,您正在打开一个巨大的蠕虫罐:)

        5
  •  1
  •   Joey Adams    15 年前

    快速回答,但我推荐这种方法:

    • 如果您使用的是数据库,请将md5sum设置为图片文件表的一列,并按该字段对该表进行索引。
    • 否则,请将哈希保存在平面文件中,如下所示:

      68b329da9893e34099c7d8ad5cb9c940 file2.bmp
      da1e100dc9e7bebb810985e37875de38 file1.jpg