javascript - 在服务器上查找相同图像并获取文件位置的最佳策略

标签 javascript php mysql

我正在构建一个 Web 应用程序,它是仅用于图像文件的数字 Assets 管理器。 上传图像时,文件会保存到一个文件夹中,并在 mysql 数据库中插入一行,其中带有哈希值,可以让我检测图像重复项。

出于安全原因,浏览器不允许我获取上传时的原始文件位置。 我能想到的获取原始文件位置的唯一方法是在我的服务器上构建所有图像的数据库表(包含两列:位置路径、差异哈希),这样我就可以找到通过匹配哈希值的任何图像。 服务器上可能有数千张图像...有更好的方法吗?

最佳答案

如果您使用哈希来检查相同的图像,它们必须逐位相同。类似还不够好。你懂的。这意味着您可以使用长度。

因此,对于您要检查的每个图像,请将长度和哈希存储在表中。然后使用这样的查询

    SELECT image_id, whatever
      FROM image_hash
     WHERE image_hash.length = ??length?? 
       AND image_hash.hash = ??hash?

将此复合索引放入您的 image_hash 表中:

CREATE INDEX image_hash_match ON image_hash (length, hash);

该索引首先使用长度进行真正快速的整数查找,然后查找哈希值。这将成功扩展到非常大量的图像(非常大的数量 = 至少数亿)。 哈希值的文本字符串查找也相当快,但不如整数查找快。

关于javascript - 在服务器上查找相同图像并获取文件位置的最佳策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60342524/

相关文章:

php - 具有多个报价和产品的报价系统

javascript - ES6 类 - 从事件处理程序中调用方法

javascript - jQuery 为每个元素分配超时事件处理程序

javascript - dc.js 和 crossfilter 减少一周中每天的平均计数

Php 正则表达式 preg_match 重复字符

PHPCS 不同目录的不同规则集

php - 为什么我的 MySQL 结果意外地重复?

javascript - 在 YouTube API 中通过 AJAX 访问视频时长

php - 我获得独特页面浏览量的方法有效吗?

MySQL 枢轴列