对于文件存储来说,计算文件相似性是一个可选的功能
这方面有很多三方库和计算方法,常见的有感知哈希算法、直方图等,这里使用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);