# @cornerstonejs/dicom-codec 中文文档

规范地址：https://npmcn.com/package/%40cornerstonejs/dicom-codec/

版本：1\.2\.0
npm 元数据更新时间：2026-10-14T12:18:13.169Z
中文译文更新时间：2026-11-10T19:30:40.667Z
软件包许可：ISC

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

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

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

- 包体积（解压后）：6.3 MB，56 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- Node.js 要求：\>=24
- 运行依赖：10 个
- 首次发布：2021-02-15T04:52:55.866Z
- 最新版本发布：2026-10-14T12:18:12.781Z
- 近 30 天下载量：3930（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：31（近 12 个月 9 个）

## 中文简介

用于JavaScript的DICOM编码器,有浏览器和Node.js支持.

## 安装

```sh
npm install @cornerstonejs/dicom-codec
```

也可以使用：`pnpm add @cornerstonejs/dicom-codec`、`yarn add @cornerstonejs/dicom-codec`、`bun add @cornerstonejs/dicom-codec`

## README

# 二相码c

用于JavaScript的DICOM编码器,有浏览器和Node.js支持.

# 特征(v1.0.1)

| 代码名称 | 语法UID( s) | 解码 | 编码 | 外部编码c | js/wasm 基数 |
| --- | --- | :-: | :-: | :-: | :-: |
| 小恩地语Name | 1.2.840.1008.1.2 1.2.840.1008.1.2.2.1 1.2.840.1008.1.2.一.一.99 | \- 说吧 | \- 说吧 | \- 说吧 | \- 说吧 |
| 大恩地语Name | 1.2.840.1008.1.2.2 (中文(简体) ) | \- 说吧 | \- 说吧 | \- 说吧 | \- 说吧 |
| 利比佩克图尔博8比特 | 1.2.840.1008.1.2.2.4.50 (中文(简体) ) | 页:1 | 页:1 | 页:1 | 页:1 |
| Libjpeg Turbo12 比特语 | 1.2.840.1008.1.2.2.4.51 (中文(简体) ) | \- 说吧 | \- 说吧 | \- 说吧 | \- 说吧 |
| Jpeg 无废 | 1.2.840.1008.1.2.4.57 1.2.840.1008.2.4.70 | 页:1 | \- 说吧 | 页:1 | \- 说吧 |
| 树脂 | 1.2.840.1008.1.2.4.80 1.2.840.1008.1.2.4.81 | 页:1 | 页:1 | 页:1 | 页:1 |
| Jpeg 2000 (日语) | 1.2.840.1008.1.2.4.90 1.2.840.1008.1.2.4.91 (中文(简体) ) | 页:1 | 页:1 | 页:1 | 页:1 |
| JpegXL 图像 | 1.2.840.1008.1.2.4.110 1.2.840.1008.1.2.4.111 1.2.840.1008.1.2.1.2.12 | 页:1 | X 除外 .111 | 页:1 | 页:1 |
| 无色 | 1.2.840.1008.1.2.2.5 (中文(简体) ) | 页:1 | \- 说吧 | \- 说吧 | \- 说吧 |
| HTJ2K 电话 | 1.2.840.1008.1.2.202 (201,203 也) | 页:1 | 页:1 | 页:1 | 页:1 |

### 下一次发布规划

v0.0.11: 对 Libjpeg Turbo12 Bit 的支持 v.0.0.12 编码选项支持. v1.0.0:支持浏览器(包含动态加载)和节点.

### 未来发布

-   Rle Losless to be js/wasm based. 莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱莱.
-   支持现有解码器的其他操作.
-   支持其余的DICOM转移语法.

# 大楼

```
# Restore packages
pnpm install

# Build
pnpm run build
```

# 如何使用

常见

```
const dicomCodec = require('@cornerstonejs/dicom-codec');
....
const imageFrame = ....// see API
const imageInfo = {} // add here image information (see API)
const result = await dicomCodec.transcode(imageFrame, imageInfo, sourceTransferSyntaxUID, targetTransferSyntaxUID);
const pixelData = dicomCodec.getPixelData(result.imageFrame, result.imageInfo);
```

ES6 标准

```
import dicomCodec from '@cornerstonejs/dicom-codec';
...
const imageFrame = ....// see API
const imageInfo = {} // add here image information (see API)
const result = await dicomCodec.transcode(imageFrame, imageInfo, sourceTransferSyntaxUID, targetTransferSyntaxUID);
const pixelData = dicomCodec.getPixelData(result.imageFrame, result.imageInfo);
```

# API 密码

## 解码

解码图像的async函数

参数(**它没有变异任何参数**:

-   被压缩的ImageFrame - 有被压缩的图像框架字节的打入阵列.
-   图像信息 - 对象
    -   行- 有图像行/ 高度的数字 .
    -   列 - 有图像列/宽的数字.
    -   位点分配 - 每个像素样本带有位点的数字.
    -   样本PerPixel - 每像素含有组件数量的数字.
    -   签名 - 如果像素数据被签名, 布尔为真; 如果未签名, 则为假.
-   源代码 TransferSyntaxUID - 与压缩图像框的传输语法 uid 字符串

回返情况:

-   对象
    -   图像Frame - 有未压缩图像框架字节的打入阵列( 大部分代码返回 Uint8Array, 但是可以看到 Uint16Array, Int16Array)
    -   图像信息 - 对象
        -   行- 有图像行/ 高度的数字 .
        -   列 - 有图像列/宽的数字.
        -   位点分配 - 每个像素样本带有位点的数字.
        -   样本PerPixel - 每像素含有组件数量的数字.
        -   签名 - 如果像素数据被签名, 布尔为真; 如果未签名, 则为假.
        -   还有一些其他的编码属性.

如果源代码TransferSyntaxUID或相關的codec's transferSyntaxUID没有代码,则不发生解码. SyntaxUID指未压缩.

## 编码

编码图像的async 函数

参数(**它没有变异任何参数**:

-   图像Frame - 带有未压缩图像框字节的打入阵列
-   图像信息 - 对象
    -   行- 有图像行/ 高度的数字 .
    -   列 - 有图像列/宽的数字.
    -   位点分配 - 每个像素样本带有位点的数字.
    -   样本PerPixel - 每像素含有组件数量的数字.
    -   签名 - 如果像素数据被签名, 布尔为真; 如果未签名, 则为假.
-   目标转换语法UID - 将图像框编码为
-   编码选项 - 对象 - 每个编码器所特有的内容(见下文) (v>=0.0.12)

回返情况:

-   对象
    -   图像Frame - 有图像框架字节的键入箭头( 大部分编码器返回 Uint8 箭头, 但可见 Uint16 Array, Int16 Array)
    -   图像信息 - 对象
        -   行- 有图像行/ 高度的数字 .
        -   列 - 有图像列/宽的数字.
        -   位点分配 - 每个像素样本带有位点的数字.
        -   样本PerPixel - 每像素含有组件数量的数字.
        -   签名 - 如果像素数据被签名, 布尔为真; 如果未签名, 则为假.
        -   还有一些其他的编码属性.
    -   进程信息 - 对象
        -   持续时间 - 以毫秒为单位的流程长度.

如果目标TransferSyntaxUID或相關的codec's transferSyntaxUID没有代码,则不发生编码. SyntaxUID指未压缩.

## 转码

转换图像(解码后编码)的async函数

参数(**它没有变异任何参数**:

-   图像Frame - 有图像框架字节的打入阵列
-   图像信息 - 对象
    -   行- 有图像行/ 高度的数字 .
    -   列 - 有图像列/宽的数字.
    -   位点分配 - 每个像素样本带有位点的数字.
    -   样本PerPixel - 每像素含有组件数量的数字.
    -   签名 - 如果像素数据被签名, 布尔为真; 如果未签名, 则为假.
-   源代码 transferSyntaxUID - 与压缩器的传输语法uid相接字符串.
-   目标转换语法UID - 用转语法 uid 字符串将图像框编码为.
-   编码选项 - 对象 - 每个编码器所特有的内容(见下文) (v>=0.0.12)

回返情况:

-   对象
    -   图像Frame - 有未压缩图像框架字节的打入阵列( 大部分代码返回 Uint8Array, 但是可以看到 Uint16Array, Int16Array)
    -   图像信息 - 对象
        -   行- 有图像行/ 高度的数字 .
        -   列 - 有图像列/宽的数字.
        -   位点分配 - 每个像素样本带有位点的数字.
        -   样本PerPixel - 每像素含有组件数量的数字.
        -   签名 - 如果像素数据被签名, 布尔为真; 如果未签名, 则为假.
        -   还有一些其他的编码属性.
    -   进程信息 - 对象
        -   持续时间 - 以毫秒为单位的流程长度.

转码可能不会发生,取决于转出SyntaxUID的参数(见上文).

## 获取像素数据

函数返回基于图像Info格式化的图像Frame 一些解码器可能根据图像Info对像素Data有特定规则.

参数(**它没有变异任何参数**:

-   图像Frame - 带有未压缩图像框字节的打入阵列
-   图像信息 - 对象
    -   行- 有图像行/ 高度的数字 .
    -   列 - 有图像列/宽的数字.
    -   位点分配 - 每个像素样本带有位点的数字.
    -   样本PerPixel - 每像素含有组件数量的数字.
    -   签名 - 如果像素数据被签名, 布尔为真; 如果未签名, 则为假.

回返情况:

-   对象
    -   映像Frame - 有映像框字节的打入阵列(大多数代码返回了Uint8Array,但可以看到Uint16Array,Int16Array). 每个解码器可能基于图像Info来不同地对待这个.

## 设置配置

设置 dicom-codec 配置属性的函数 参数(**它没有变异任何参数** :

-   选项 - 对象
    -   动词 - 如果dicom-codec是动词,则布尔真能,否则是虚假的.

## 传输语法特定编码选项

### JPEG XL 密码

传输语法 `1.2.840.10008.1.2.4.110` 总是使用无损失编码. 传输语法 `1.2.840.10008.1.2.4.111` 仅因为 像素编码器不创建JPEG重建数据.

传输语法 `1.2.840.10008.1.2.4.112` 接受这些编码选项 :

-   `lossless`:布尔,默认为 `true`。 。 。 .
-   `distance`: Butteraugli距离从0到25,用于失序编码. 默认为 `1.0` ——cjxl的默认,"可视无亏"——何时 `lossless` 实值 `false` 财务报告和审定财务报表 没有给出距离 。 不要依赖 libjxl 自身的默认 0: 它达到了 距离 0 通过 VarDCT 而不是模块化路径,该路径大于 一个真正的无损失编码 仍然不是无损失.
-   `effort`:整数从1到9.
-   `decodingSpeed`:整数从0到4.

#### 已签名的像素数据

JPEG XL 没有签名的样本类型 - `JxlDataType` 无符号整数或浮动 ——所以像素代表不能被带入代码流. 第3.5页 8.2.15 允许像素表达式为单色 JPEG XL 图像的 1, 但定义 没有任何机制,所以绘图是一个公约。 此库使用 每个传输语法不同,并自动应用:

| 传输语法 | 已签名样本 |
| --- | --- |
| `.110` 无损失 | 传入为二相补. 字节精确的回程;赤色的代码流读取为未签名,任何应用像素代表的阅读器本身都同意. |
| `.112` | 等级在编码前和解码后相接后相接上取了样本范围的一半. |

`.112` 需要改变,因为作为未签名的 CT 框架 `[-2048, 1704]` 变成 `[0, 1704]` 加号 `[63488, 65535]`和丢失的编码涂片 相差:2211 HU 最大误差为1.0距离而无. 实行轮班制 给每个签名的 `.112` 框架、无损失选项或非损失选项,以便解码 倒置它只知道转移语法.

有两个后果值得了解:

-   签名框架在下面产生不同的字节 `.110` 财务报告和审定财务报表 `.112`两种解码 回到相同的像素这里,但是 `.112` 流读取的解码器 假设2的补缺 由 `2^(BitsStored-1)`没有 标准对公约作了区分.
-   巴特劳格利的距离是相对于全的 `BitsAllocated` 范围。 简历 大约占到16位范围的6%,所以距离1.0仍然允许 几百个HU错误。 使用小距离,或 `.110`,当HU忠诚 问题.

同样的限制也适用于JPEG-LS,它也没有标志旗;这个 库只为此对 JPEG-LS 进行无穷编码.

## 测试

```bash
pnpm run test   # run vitest dispatch + integration tests
```

集成测试需要每一个基础的 enm编码器 `dist/` 待建项目 本地的,否则它们会完全跳过。 CI先构建一切.

## 常见问题

### @cornerstonejs/dicom-codec 是什么？

用于JavaScript的DICOM编码器,有浏览器和Node\.js支持\.

### 如何安装 @cornerstonejs/dicom-codec？

在项目目录运行 npm install @cornerstonejs/dicom-codec，或使用 pnpm add / yarn add / bun add。

### @cornerstonejs/dicom-codec 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/cornerstonejs\_\_dicom-codec 是否存在。

### @cornerstonejs/dicom-codec 支持 ESM 还是 CommonJS？

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

### @cornerstonejs/dicom-codec 需要什么版本的 Node\.js？

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

### @cornerstonejs/dicom-codec 可以商用吗？

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

### @cornerstonejs/dicom-codec 的下载量有多少？

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

### @cornerstonejs/dicom-codec 还在维护吗？

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

