# @colorhythm/libraw-wasm 中文文档

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

版本：1\.1\.1
npm 元数据更新时间：2026-08-03T21:35:39.087Z
中文译文更新时间：2026-11-10T11:19:14.111Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：1.3 MB，17 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- 首次发布：2026-07-02T07:54:19.531Z
- 最新版本发布：2026-08-03T21:35:38.752Z
- 近 30 天下载量：14113（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：3（近 12 个月 3 个）

## 中文简介

LibRaw WebAssembly 为浏览器和Node.js应用程序装订有相机-raw分析表面.

## 安装

```sh
npm install @colorhythm/libraw-wasm
```

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

## README

# @ colorhythm/ libraw-wasm (英语)

[![npm version](https://img.shields.io/npm/v/%40colorhythm%2Flibraw-wasm.svg)](https://www.npmjs.com/package/@colorhythm/libraw-wasm)

脚本绑定 [立方圆形](https://www.libraw.org/)编译为 WebAssembly 用于浏览器和节点.js相机-raw解码. 色彩韵律维护 用于需要直接、面向分析的应用程序的分叉 传感器数据——不仅仅是一个渲染的RGB图像.

包裹故意为低等. 它可以暴露存储的传感器缓冲器, 可见图像几何、彩色过滤事实、相机特征、黑色和 饱和水平、嵌入式元数据、缩略图和LibRaw处理 输出。 沉重的解码和像素统计通常应在工人中运行.

## 色彩韵律添加什么

此叉保留了原始 API并添加了浏览器侧面所需的表面 相机绘图分析 :

-   存储和可见几何,包括边距、取向、像素 边和行投出
-   FAF和FOVEON 源代码,加上16位 1,3,4个组件 缓冲器
-   相机矩阵、信道说明和白平衡乘数
-   Rawpy-兼容调整后黑色水平和报告的每道线性最大值a
-   处理设置器 `half_size` 财务报告和审定财务报表 `use_camera_wb`
-   类型 `LibRawError` 具有稳定数字 LibRaw 错误代码的诊断
-   LibRaw 的 X3F 解码器编译为 Web Assembly 架构

## 安装

```sh
npm install @colorhythm/libraw-wasm
```

生成的模块负载 `libraw.wasm` 并肩战斗 `import.meta.url` 在节点.js和相容捆绑。 网络大会二进制也是 导出为 `@colorhythm/libraw-wasm/libraw.wasm` 申请表 定制资产管道.

## 检查相机绘制的文件

```ts
import { LibRaw } from "@colorhythm/libraw-wasm";

async function inspectCameraRaw(file: File) {
    await LibRaw.initialize();

    const decoder = new LibRaw();
    await decoder.waitUntilReady();

    try {
        decoder.open(await file.arrayBuffer());
        decoder.unpack();

        const source =
            decoder.getRawImage() ??
            decoder.getColor3Image() ??
            decoder.getColor4Image();

        if (source === null) {
            throw new Error("LibRaw did not expose an unpacked source buffer");
        }

        const camera = decoder.getIParams();

        return {
            blackLevels: [0, 1, 2, 3].map((index) =>
                decoder.getBlackLevel(index),
            ),
            camera: `${camera.normalized_make} ${camera.normalized_model}`,
            geometry: {
                activeHeight: decoder.getActiveHeight(),
                activeWidth: decoder.getActiveWidth(),
                marginLeft: decoder.getLeftMargin(),
                marginTop: decoder.getTopMargin(),
                storedHeight: decoder.getRawHeight(),
                storedWidth: decoder.getRawWidth(),
            },
            sourceSamples: source.length,
        };
    } finally {
        decoder.dispose();
    }
}
```

`getRawImage()`, (中文(简体) ), `getColor3Image()`,以及 `getColor4Image()` 返回时 拥有 `Uint16Array` 副本后 `unpack()`。它们继续有效 解码, `recycle()`,网络大会内存增长,或 `dispose()`方法返回 `null` 当 LibRaw 不显示文件的源版式时。 当前 绑定不会暴露 LibRaw 的浮点源缓冲.

## 1.1.0 相容性说明

1.1.0版本纠正了1.0.0引入的源-像素回还合同. 类型脚本返回类型是 `Uint16Array | null`,每个非核数组有: 准确的解开长度,不设行垫,每个阵列都拥有它的存储. 假设较早的非核类型应该选择可用来源的代码 明确布局,如上示例.

## 处理错误

LibRaw 失败抛出 `LibRawError`,保留了 LibRaw 数字错误 代码与诊断信息 :

```ts
import { LibRawError } from "@colorhythm/libraw-wasm";

try {
    decoder.open(buffer);
} catch (error) {
    if (error instanceof LibRawError) {
        console.error(error.code, error.message);
    }
    throw error;
}
```

## 分析 API

| 区域 | 方法 | 页:1 |
| --- | --- | --- |
| 几何 | `getActiveHeight()`, (中文(简体) ), `getActiveWidth()`, (中文(简体) ), `getRawHeight()`, (中文(简体) ), `getRawWidth()`, (中文(简体) ), `getRawPitch()`边角取出者, `getFlip()`, (中文(简体) ), `getPixelAspect()` | Raw维度描述所存储的数据;LibRaw的可见维度和边距定位图像区域. 这些值不一定是字面上的 DNG `ActiveArea`. Pitch 以字节表示. |
| 源头布局 | `getColors()`, (中文(简体) ), `getCdesc()`, (中文(简体) ), `getFilters()`, (中文(简体) ), `getIsFoveon()`, (中文(简体) ), `color()` | 描述非洲金融共同体和多渠道来源组织. `getCdesc()` 返回字符代码. |
| 源像素 | `getRawImage()`, (中文(简体) ), `getColor3Image()`, (中文(简体) ), `getColor4Image()` | 返回 LibRaw 为文件所曝光的已解开的 16 位源缓冲器 . |
| 职等 | `getBlackLevel()`, (中文(简体) ), `getLinearMax()`, (中文(简体) ), `getColorMaximum()`, (中文(简体) ), `getDataMaximum()` | 曝光调整了每个通道的黑色水平,每个通道的线性最大值,以及LibRaw常见并被观察到的最大值. 每道线性最大值可以是 `0` 当文件不提供时. |
| 字符化 | `getCamMul()`, (中文(简体) ), `getPreMul()`, (中文(简体) ), `getCamXyz()`, (中文(简体) ), `getCmatrix()`, (中文(简体) ), `getRgbCam()` | 曝光相机白-平衡乘数和数色矩阵. |
| 描述元数据 | `getIParams()`, (中文(简体) ), `getImgOther()`, (中文(简体) ), `getLensInfo()`, (中文(简体) ), `getMakernotes()`, (中文(简体) ), `getShootingInfo()` | 读取LibRaw所打入的元数据结构. 当需要完整标签覆盖时使用专用元数据解析器 . |
| 缩略图和渲染 | `unpackThumb()`, (中文(简体) ), `dcrawMakeMemThumb()`, (中文(简体) ), `dcrawProcess()`, (中文(简体) ), `dcrawMakeMemImage()` | 提供嵌入式预览和LibRaw处理后输出路径. |

静态方法曝光所编译的LibRaw版本,支持相机计数,以及 相机列表 :

```ts
await LibRaw.initialize();

console.log(LibRaw.version());
console.log(LibRaw.cameraCount());
console.log(LibRaw.cameraList());
```

## 处理政策

在前置处理参数 `dcrawProcess()`。 。 。 . `setHalfSize(1)` 请求 半线性维度,同时 `setUseCameraWb(1)` 请拍摄相机 白平衡乘数. 应用程序还应选择其输出颜色 明确与 `setOutputColor()` 而不是继承一个隐含的 LibRaw 默认值 .

未打开的源路径不调用 `dcrawProcess()` 因此,现在 适用于传感器内在分析.

## 工人使用情况

相机绘图解码和全分辨率统计可以消耗大量的CPU 时间和记忆 在浏览器应用程序中创建和使用 `LibRaw` 内置 a 敬业的工人。 传输输入 `ArrayBuffer` 给工人,表演 分析,并只返回界面摘要或像素数据 需要帮助.

每个成功 `open()` 将复制过的输入保存到另一个 `open()`, (中文(简体) ), `recycle()`,或 `dispose()` 释放它。 为相继的工作重新使用解码器或 工人完成后处理它。 源像素获取器返回 可独立转让或保留的复制件.

## 网络大会加载和生命周期

`LibRaw.initialize()` 在一个 JavaScript 域内共享,它的第一个调用 选择WebAssembly有效载荷。 供应任何自定义 `Response` 或者说 `ArrayBuffer` 在构建解码器之前 :

```ts
const response = await fetch("/assets/libraw.wasm");

if (!response.ok) {
    throw new Error(`Unable to load LibRaw WASM: ${response.status}`);
}

await LibRaw.initialize(await response.arrayBuffer());
```

通过一个 `ArrayBuffer` 避免依赖服务器的 Web Assembly MIME 类型。 通过一个 `Response` 允许流编译和要求 要发送的服务器 `application/wasm`。 。 。 .

## 开发

带有子模块的克隆,安装工作空间,并运行检查:

```sh
git clone --recurse-submodules https://github.com/colorhythm/libraw-wasm.git
cd libraw-wasm
corepack enable
pnpm install
pnpm check
pnpm test
```

重建网络大会二进制需要 `make` 和标志。 打开 `emcc` 财务报告和审定财务报表 `em++` 打开 `PATH`设置 `SYSROOT` 给标记 `cache/sysroot` 目录, 然后运行 `pnpm build`。存储器的 [建立设置动作](https://github.com/colorhythm/libraw-wasm/blob/main/.github/actions/setup-build/action.yml) 是支持的工具链的可执行引用.

## 血统和感谢

这是Colorhythm的维护叉 [利布劳·瓦斯姆](https://github.com/ssssota/libraw.wasm) 以 [藤间川素太郎](https://github.com/ssssota)。其类型脚本绑定和 WebAssembly 构建了浏览器侧 LibRaw 以实用扩展 。 谢谢, 素太郎 苏太郎.

[立方圆形](https://github.com/LibRaw/LibRaw) 由LibRaw有限责任公司及其 贡献者.

## 许可证

TypeScript 和WebAssembly 包装器在 [MIT 许可证](https://github.com/colorhythm/libraw-wasm/blob/main/packages/libraw.wasm/LICENSE)。 。 。 . 包含的 LibRaw 来源在其中之一 [LGPL 2.1 软件](https://github.com/colorhythm/libraw-wasm/blob/main/packages/libraw.wasm/LibRaw/LICENSE.LGPL) 或者说 [CDDL 1.0 (中文(简体) )](https://github.com/colorhythm/libraw-wasm/blob/main/packages/libraw.wasm/LibRaw/LICENSE.CDDL)。 。 。 . 参见 LibRaw 的 [版权和通知](https://github.com/colorhythm/libraw-wasm/blob/main/packages/libraw.wasm/LibRaw/COPYRIGHT) 包括第三方组件。 npm tarball 包括所有三个 下方的 LibRaw 文件 `LibRaw/`。 。 。 .

## 常见问题

### @colorhythm/libraw-wasm 是什么？

LibRaw WebAssembly 为浏览器和Node\.js应用程序装订有相机-raw分析表面\.

### 如何安装 @colorhythm/libraw-wasm？

在项目目录运行 npm install @colorhythm/libraw-wasm，或使用 pnpm add / yarn add / bun add。

### @colorhythm/libraw-wasm 支持 TypeScript 吗？

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

### @colorhythm/libraw-wasm 支持 ESM 还是 CommonJS？

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

### @colorhythm/libraw-wasm 可以商用吗？

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

### @colorhythm/libraw-wasm 的下载量有多少？

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

### @colorhythm/libraw-wasm 还在维护吗？

最新版本 1\.1\.1 发布于 2026/08/04（3 个月前）；至今共发布 3 个版本，其中过去 12 个月发布了 3 个；首次发布于 2026/07/02。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

