【问题标题】:Can I use PHP base64_encode for image duplicate check?我可以使用 PHP base64_encode 进行图像重复检查吗?
【发布时间】:2015-04-22 09:00:08
【问题描述】:

base64_encode 转换为二进制数据,例如

9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8

我可以带一些字符来检查重复吗?我可以为视频做同样的事情吗?

【问题讨论】:

    标签: php image duplicates


    【解决方案1】:

    就像其他人所说的那样,不要使用 Base64 作为比较文件的方法,使用 SHA1 之类的东西会便宜得多,特别是如果您将其用于视频。 See the sha1_file function

    例如,如果您已经有一个 SHA1 和,则很容易比较:

    if ($storedSHA1 == sha1_file($newImage)){
        // ...some rejection code
    }
    

    我建议创建一个数据库表来存储您上传的每个文件的名称、大小和 SHA1。然后您可以运行一个简单的查询来检查是否有任何记录匹配。如果您的数据库中有匹配项,您就知道您有重复项。

    请参阅下面的 MySQL 查询。

    SELECT SHA1_hash FROM Uploads
    WHERE SHA1_hash = '<hashOfIncomingImage>';
    

    【讨论】:

      【解决方案2】:

      不,你没有。使用digest 进行重复检查。 SHA1 是足够好的选择。与 base64 相比,它具有恒定且较小的占用空间。 Base64 适用于传输或交换二进制数据,仅此而已。此外,base64 比二进制数据大 1/3 左右。

      Verifying that two files are identical using pure PHP?

      【讨论】:

        【解决方案3】:

        您想为此使用哈希函数,例如 Sha1。它总是返回一个 40 个字符,您可以用来比较。

        【讨论】:

          猜你喜欢
          • 2013-01-02
          • 1970-01-01
          • 2013-10-02
          • 1970-01-01
          • 2013-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多