本地使用minio之计算图片相似性

26 阅读1分钟

对于文件存储来说,计算文件相似性是一个可选的功能

这方面有很多三方库和计算方法,常见的有感知哈希算法、直方图等,这里使用image-hash

因为可能存在的数据修补矫正或者任务等各种原因,像计算图片相似性这种一般来说就归为后端来计算了,我这里一般使用16bits,参数可以查看image-hash库的文档

async imageHashPromise(oldSrc: string | UrlRequestObject | BufferObject, bits: number, method: boolean) {
  const { promise, resolve, reject } = TsUtils.getSeparatePromise<string>();

  imageHash(oldSrc, bits, method, (error, data) => {
    if (error) {
      reject(error);
      return;
    }
    resolve(data);
  });

  return promise;
}

image.imageHashFor16bits = await this.imageHashPromise(`http://127.0.0.1:9000/nest-monorepo/${image.hash}`, 16, false);