@argos-ci/mask-fingerprint

中文文档
0.1.3发布于 2026/01/19MITTypeScriptCommonJS零依赖构建来源已验证近 30 天下载 5433

快速,定型的PNG图像视觉diff指纹,通过N-API作为Node.js本地模块被曝光.

中文使用文档
文档目录13 节
  1. 这能解决什么问题
  2. 如何运作
  3. 安装
  4. 所需资源
  5. 安装依赖关系
  6. 使用量
  7. API 密码
  8. fingerprintDiff(buffer, options?)
  9. 支持的PNG格式
  10. 性能特征
  11. 何时使用
  12. 发展
  13. 许可证

口罩指印

快速,决定性 视觉 diff 指纹 对于PNG图像,通过N-API作为Node.js本地模块被曝光.

此库使用 PNG diff 图像( 例如红像素视觉 diffs) 并生成一个 稳定平等指纹。 。 。 .
两个视觉上非常相近的光圈会产生 同样的指纹,允许:

  • fingerprintA === fingerprintB
  • 数据库索引
  • 分组和分解
  • 没有自定义比较逻辑的加入

核心算法以Rust为性能写出并被曝光出Node.js.

这能解决什么问题

经典的知觉散列需要进行相距比较,这与SQL指数或严格的等同性不起作用.

这个项目是:

  • 规范 diff 口罩
  • 将空间密度量化
  • 粗糙的表达方式

结果是 容忍的平等,不大致相似.

如何运作

  1. 将 PNG 解码为 RGBA
  2. 提取红色像素的二进制掩码
  3. 吸收小像素噪声的可选扩展
  4. 裁剪到边框
  5. 可选平方贴纸
  6. 拆分为小网格(8×8,16×16或32×32)
  7. 计算每个细胞的红色密度
  8. 将密度量化为垃圾桶
  9. 用 FNV-1a- 64- bit 包装位和散列
  10. 返回决定性的字符串密钥

小的局部差异通常不会改变最终指纹.

安装

所需资源

  • 节点.js 24或更新
  • 平稳
  • 货物

安装依赖关系

pnpm install

或者说

npm install

这构建了本土模块.

使用量

import fs from 'node:fs'
import { fingerprintDiff } from 'mask-fingerprint'

const png = fs.readFileSync('diff.png')

const fingerprint = await fingerprintDiff(png, {
  gridSize: 16,
  dilateRadius: 1,
  padToSquare: true,
  densityThresholds: [0.002, 0.02, 0.08],
  redThreshold: {
    rMin: 200,
    gMax: 90,
    bMax: 90,
    aMin: 16,
  },
})

console.log(fingerprint)
// v1:g16:d1:t0.002,0.02,0.08:3fa1c2e9a4b8d210

返回的值被设计成存储在数据库中,索引化,并使用严格的等值进行比较.

API 密码

fingerprintDiff(buffer, options?)

回返a Promise<string>。 。 。 .

参数

缓冲

  • 节点.js Buffer
  • Raw PNG 文件内容

选项 (可选)

{
  gridSize?: 8 | 16 | 32        // default: 16
  dilateRadius?: 0 | 1          // default: 1
  padToSquare?: boolean         // default: true

  densityThresholds?: number[]  // default: [0.002, 0.02, 0.08]
                                // sorted, values between 0 and 1

  redThreshold?: {
    rMin?: number               // default: 200
    gMax?: number               // default: 90
    bMax?: number               // default: 90
    aMin?: number               // default: 16
  }
}

回返

string

适合进行平等比较和索引的决定性指纹字符串.

支持的PNG格式

  • RGBA (英语)
  • RGB 语言
  • 灰度
  • 带有α的灰度
  • 索引或调色板 PNG

调色板和低位深度图像自动被扩展.

性能特征

  • 以像素数计的线性时间
  • 没有重型浮点操作
  • 热道最小分配
  • 适用于分批处理

典型的工作量每秒处理上千个diff.

何时使用

不错:

  • 视觉回归测试
  • 屏幕截图 diff 复制
  • CI 文物组装
  • 数据库支持的视觉变化跟踪

不合时宜:

  • 一般图像相似性搜索
  • 大几何转换
  • 旋转或强度变化

这个库是故意优化的 防弹口罩而非任意图像.

发展

cargo check
cargo test

重建本地模块 :

pnpm build

许可证

麻省理工学院

版本与发布记录

@argos-ci/mask-fingerprint 共发布 6 个版本,首次发布于 2026/01/12;过去 12 个月发布了 6 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.3latest2026/01/199 个月前
0.1.22026/01/149 个月前
0.1.12026/01/139 个月前
0.1.02026/01/139 个月前
0.0.22026/01/139 个月前
0.0.12026/01/129 个月前

关于 @argos-ci/mask-fingerprint 的常见问题

@argos-ci/mask-fingerprint 是什么?

快速,定型的PNG图像视觉diff指纹,通过N-API作为Node.js本地模块被曝光.

如何安装 @argos-ci/mask-fingerprint?

在项目目录运行 npm install @argos-ci/mask-fingerprint,或使用 pnpm add / yarn add / bun add。

@argos-ci/mask-fingerprint 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@argos-ci/mask-fingerprint 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@argos-ci/mask-fingerprint 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@argos-ci/mask-fingerprint 可以商用吗?

@argos-ci/mask-fingerprint 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@argos-ci/mask-fingerprint 的下载量有多少?

根据 npm 官方下载统计,@argos-ci/mask-fingerprint 在 2026/10/07 – 2026/11/05 这 30 天内被下载 5,433 次,日均约 181 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@argos-ci/mask-fingerprint 还在维护吗?

最新版本 0.1.3 发布于 2026/01/19(9 个月前);至今共发布 6 个版本,其中过去 12 个月发布了 6 个;首次发布于 2026/01/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。