@deviceflow/rxing-wasm

中文文档
0.5.1发布于 2025/08/24Apache 2.0TypeScriptES Module零依赖近 30 天下载 2597

用于 rxing 提供 comm 条码操作( decode/ encode) 的 sem 绑定

中文使用文档
文档目录8 节
  1. 用 v. 3. 0 解码多断层变化
  2. 数据
  3. 提示
  4. 使用 DecodeHintDictionary 类
  5. DecodeHintTypes 数值
  6. 结果元数据
  7. 职能
  8. 贝塔特性

rxing -wasm (英语)

WASM 用于常见的 rxing 函数 。 国家预防机制的联系是: https://www.npmjs.com/package/@deviceflow/rxing-wasm (中文(简体) ) 生锈的源头 https://github.com/deviceflow/rxing-wasm 页面存档备份,存于互联网档案馆。 。 。 .

这个叉子和 上游软件包时,除 wasm-pack 与 --web 旗帜.

用 v. 3. 0 解码多断层变化

版本 0.3.0 现在返回 BarcodeResult 在原生的javascript阵列中的对象。 这完全破坏了旧方法 它返回了内部状态的自定义对象.

数据

这个 convert_js_image_to_luma 函数用于将画布图像数据转换为 luma 8 rxing 所期望的格式。 下面可能有一个例子.

function decodeBarcode(canvas) {
    let context = canvas.getContext('2d');
    let height = canvas.height;
    let width = canvas.width;
    let imageData = context.getImageData(0, 0, width, height);

    let data = imageData.data;
    let luma8Data = convert_js_image_to_luma(data);
    let parsedBarcode = decode_barcode(luma8Data, width, height);
    
    return parsedBarcode;
}

这个 convert_canvas_to_luma 函数用于将画布转换为 luma 8 rxing 所期望的格式。 下面可能有一个例子.

function decodeBarcode(canvas) {
    let height = canvas.height;
    let width = canvas.width;
    let luma8Data = convert_canvas_to_luma(canvas);
    let parsedBarcode = decode_barcode(luma8Data, width, height);
    
    return parsedBarcode;
}

这个 convert_imagedata_to_luma 函数用于将图像数据对象转换为 luma 8 rxing 所期望的格式。 下面可能有一个例子.

function decodeBarcode(canvas) {
    let context = canvas.getContext('2d');
    let height = canvas.height;
    let width = canvas.width;
    let imageData = context.getImageData(0, 0, width, height);

    let luma8Data = convert_imagedata_to_luma(imageData);
    let parsedBarcode = decode_barcode(luma8Data, width, height);
    
    return parsedBarcode;
}

提示

使用 DecodeHintDictionary 类

添加提示为 set_hint(hint: DecodeHintTypes, value: string)函数返回 true 如果添加提示,则 false 如果不是的话。 提示值必须是 number 表示为 DecodeHintTypes。最容易使用的方法就是简单地通过其中的一个值 DecodeHintTypes。 。 。 .

使用 remove_hint(hint: DecodeHintTypes)函数返回 true 如果提示存在并删除 false 否则。 提示值与添加 hint 函数相同.

DecodeHintTypes 数值

以下数值可用于: DecodeHintTypes um.

  • Other:未指定,应用程序专用提示. 这可以是任意的字符串,只有一些解码员关心这个值.
  • PureBarcode:图像是条码的纯单色图像. 应该是带"真"或"假"的绳子.
  • PossibleFormats:一个逗号分隔列表(元素之间没有空格),其中有要搜索的条码格式的名称. 例如,寻找一个QrCode和一个Datamatrix,人们会在字符串"qrcode,datamatrix"中通过.
  • TryHarder:多花点时间尝试找条码;优化精度而非速度. 用"真"或"假"来串.
  • CharacterSet: 指定在解码时使用的字符编码。 这应该是字符编码的字符串映射.
  • AllowedLengths: 允许编码数据长度 -- 拒绝其他任何内容。 逗号分隔的整数列表 .
  • AssumeCode39CheckDigit:假设代码39使用支票数字。 有"真"或"假"的字符串.
  • AssumeGs1:假设条码作为GS1条码处理,并根据需要修改行为. 例如,这影响到FNC1对代码128(aka GS1-128)的处理。 有"真"或"假"的字符串.
  • ReturnCodabarStartEnd:如果为真,则返回Codabar条码中的起始和结尾数字,而不是剥去它们。 它们是α的,而其他的则是数字. 默认情况下,它们被剥去,但这使他们无法脱去. 有"真"或"假"的字符串.
  • NeedResultPointCallback: 当找到可能的“结果点”时,需要通过召回方式通知呼叫者。 目前不支持 。 未来会映射到 a(x:数字,y:数字)=QQ函数.
  • AllowedEanExtensions: EAN或UPC条码允许的扩展长度. 其他格式会忽略这一点. 被允许扩展长度的逗号分离列表,例如"2","5"或"2". 如果有扩展名是可选的, 请不要设置此提示 。 如果设置了这个系统,并找到刚果爱国者联盟或EAN条码,但扩展码没有,则完全不会返回结果.
  • AlsoInverted: 如果真实, 也尝试解码为倒转图像 。 所有已配置的解码器都简单地称为有倒转图像的第二次. 有"真"或"假"的字符串.

结果元数据

结果元数据现在可通过 get_result_metadata_name 方法 BarcodeResult 课。 返回的结果是 Javascript Map 对象表示可用的解码元数据。 可能的密钥有:

  • OTHER
  • Orientation
  • Byte_Segments
  • Error_Correction_Level
  • Issue_Number
  • Suggested_Price
  • Possible_Country
  • UPC/EAN_Extension
  • PDF417_Extra_MetaData
  • Structured_Append_Sequence
  • Structured_Append_Parity
  • Symbology_Identifier
  • Is_Mirrored
  • Content_Type

必须指出,并非所有的价值观都将为所有成果确定.

职能

pub fn convert_js_image_to_luma(data: &[u8]) -> Vec<u8>;
pub fn encode_barcode(
    data: &str,
    width: u32,
    height: u32,
    bc_type: BarcodeFormat,
) -> Result<String, String>;
pub fn decode_barcode(
    data: Vec<u8>,
    width: u32,
    height: u32,
    try_harder: Option<bool>,
) -> Result<BarcodeResult, String>;
pub fn decode_barcode_with_hints(
    data: Vec<u8>,
    width: u32,
    height: u32,
    hints: &mut decode_hints::DecodeHintDictionary,
) -> Result<BarcodeResult, String>;
pub fn decode_multi(
    data: Vec<u8>,
    width: u32,
    height: u32,
    hints: &mut decode_hints::DecodeHintDictionary,
    filter_image: Option<bool>,
) -> Result<Vec<BarcodeResult>, String>;
pub fn encode_barcode_with_hints(
    data: &str,
    width: u32,
    height: u32,
    bc_type: BarcodeFormat,
    hints: &mut EncodeHintDictionary,
) -> Result<String, String>;

贝塔特性

encode_barcode_with_hints 目前为α。 产出和行为是出乎意料的,而且记录也很差。 自身风险使用,特性可能改变,界面不稳定.

版本与发布记录

@deviceflow/rxing-wasm 共发布 2 个版本,首次发布于 2024/11/20;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.5.1latest2025/08/241.2 年前
0.3.12024/11/202 年前

关于 @deviceflow/rxing-wasm 的常见问题

@deviceflow/rxing-wasm 是什么?

用于 rxing 提供 comm 条码操作( decode/ encode) 的 sem 绑定

如何安装 @deviceflow/rxing-wasm?

在项目目录运行 npm install @deviceflow/rxing-wasm,或使用 pnpm add / yarn add / bun add。

@deviceflow/rxing-wasm 支持 TypeScript 吗?

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

@deviceflow/rxing-wasm 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@deviceflow/rxing-wasm 可以商用吗?

@deviceflow/rxing-wasm 使用 Apache 2.0 许可。声明的许可为 Apache 2.0,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@deviceflow/rxing-wasm 的下载量有多少?

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

@deviceflow/rxing-wasm 还在维护吗?

最新版本 0.5.1 发布于 2025/08/24(1.2 年前);至今共发布 2 个版本,其中过去 12 个月发布了 0 个;首次发布于 2024/11/20。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。