@colorhythm/libraw-wasm

中文文档
1.1.1发布于 2026/08/04MITTypeScriptES Module构建来源已验证近 30 天下载 1.4万

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

中文使用文档
文档目录12 节
  1. 色彩韵律添加什么
  2. 安装
  3. 检查相机绘制的文件
  4. 1.1.0 相容性说明
  5. 处理错误
  6. 分析 API
  7. 处理政策
  8. 工人使用情况
  9. 网络大会加载和生命周期
  10. 开发
  11. 血统和感谢
  12. 许可证

@ colorhythm/ libraw-wasm (英语)

npm version

脚本绑定 立方圆形编译为 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 架构

安装

npm install @colorhythm/libraw-wasm

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

检查相机绘制的文件

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 数字错误 代码与诊断信息 :

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版本,支持相机计数,以及 相机列表 :

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 在构建解码器之前 :

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。 。 。 .

开发

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

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。存储器的 建立设置动作 是支持的工具链的可执行引用.

血统和感谢

这是Colorhythm的维护叉 利布劳·瓦斯姆 以 藤间川素太郎。其类型脚本绑定和 WebAssembly 构建了浏览器侧 LibRaw 以实用扩展 。 谢谢, 素太郎 苏太郎.

立方圆形 由LibRaw有限责任公司及其 贡献者.

许可证

TypeScript 和WebAssembly 包装器在 MIT 许可证。 。 。 . 包含的 LibRaw 来源在其中之一 LGPL 2.1 软件 或者说 CDDL 1.0 (中文(简体) )。 。 。 . 参见 LibRaw 的 版权和通知 包括第三方组件。 npm tarball 包括所有三个 下方的 LibRaw 文件 LibRaw/。 。 。 .

版本与发布记录

@colorhythm/libraw-wasm 共发布 3 个版本,首次发布于 2026/07/02;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.1.1latest2026/08/043 个月前
1.1.02026/08/043 个月前
1.0.02026/07/024 个月前

关于 @colorhythm/libraw-wasm 的常见问题

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