# @deviceflow/rxing-wasm 中文文档

规范地址：https://npmcn.com/package/%40deviceflow/rxing-wasm/

版本：0\.5\.1
npm 元数据更新时间：2025-08-23T18:42:41.146Z
中文译文更新时间：2026-11-12T10:13:51.860Z
软件包许可：Apache 2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40deviceflow/rxing-wasm
原文对照：https://npmcn.com/package/%40deviceflow/rxing-wasm/?lang=original
项目主页：https://github.com/rxing-core/rxing-wasm#readme
源码仓库：https://github.com/rxing-core/rxing-wasm

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：2.8 MB，6 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：0 个
- 首次发布：2024-11-20T00:30:34.554Z
- 最新版本发布：2025-08-23T18:42:40.590Z
- 近 30 天下载量：2597（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：2（近 12 个月 0 个）

## 中文简介

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

## 安装

```sh
npm install @deviceflow/rxing-wasm
```

也可以使用：`pnpm add @deviceflow/rxing-wasm`、`yarn add @deviceflow/rxing-wasm`、`bun add @deviceflow/rxing-wasm`

## README

# rxing -wasm (英语)

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

这个叉子和 [上游软件包](https://github.com/rxing-core/rxing-wasm)时,除 `wasm-pack` 与 `--web` 旗帜.

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

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

## 数据

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

```javascript
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 所期望的格式。 下面可能有一个例子.

```javascript
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 所期望的格式。 下面可能有一个例子.

```javascript
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`

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

## 职能

```rust
pub fn convert_js_image_to_luma(data: &[u8]) -> Vec<u8>;
```

```rust
pub fn encode_barcode(
    data: &str,
    width: u32,
    height: u32,
    bc_type: BarcodeFormat,
) -> Result<String, String>;
```

```rust
pub fn decode_barcode(
    data: Vec<u8>,
    width: u32,
    height: u32,
    try_harder: Option<bool>,
) -> Result<BarcodeResult, String>;
```

```rust
pub fn decode_barcode_with_hints(
    data: Vec<u8>,
    width: u32,
    height: u32,
    hints: &mut decode_hints::DecodeHintDictionary,
) -> Result<BarcodeResult, String>;
```

```rust
pub fn decode_multi(
    data: Vec<u8>,
    width: u32,
    height: u32,
    hints: &mut decode_hints::DecodeHintDictionary,
    filter_image: Option<bool>,
) -> Result<Vec<BarcodeResult>, String>;
```

```rust
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 是什么？

用于 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 和提交记录判断。

