DICOM 插件

使用 DicomPlugin 查看医学图像

DICOM 插件为 Doconut 添加医学图像查看功能:多帧 DICOM 文件可以渲染为动画概览、单独帧或两者兼有。DICOM 是一种 仅插件格式 —— 没有此插件(及其许可证功能),.dcm 文件根本无法打开。

安装包

bash
dotnet add package Doconut.NET6.Dicom

未指定版本的命令会安装最新的稳定版本。若要将插件固定在当前的 26.7.0 版本,请单独传递版本号:

bash
dotnet add package Doconut.NET6.Dicom --version 26.7.0

保持 DICOM 包的版本与 Doconut.NET6 相同。包 ID 为 Doconut.NET6.Dicom.26.7.0 仅出现在下载的 .nupkg 文件名中。

注册插件

csharp
builder.Services.AddDoconut(options =>
{
    options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});

该插件(Name"Doconut DICOM Viewer")为 .dcm.ima 扩展名注册查看器,并受 Dicom 能力的限制。缺少或不足的非临时授权通常会在 AddDoconut() 时失败。由于没有内置查看器能够处理这些格式,如果该能力随后不可用,运行时门也会直接失败:

text
LicenseException: This document type requires the 'Dicom' plugin license.

打开 DICOM 文件

csharp
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
    DisplayMode = DicomDisplayMode.AnimationAndFrames
});

显示模式

多帧 DICOM 文件可以通过三种方式呈现(DicomDisplayMode):

模式生成的页面适用场景
AnimationOnly第 1 页 = 动画 GIF,循环所有帧快速电影式回顾
FramesOnly第 1..N 页 = 每帧一个静态 PNG逐帧诊断导航
AnimationAndFrames (default)第 1 页 = 动画 GIF,页 2..N = 静态帧在同一文档中提供概览与细节

动画时长由 AnimationFrameDelayMs 控制(默认 100 毫秒 = 10 FPS;GIF 的粒度为 10 毫秒单位),以及 LoopCount0 表示无限循环)。

分辨率

DicomConfig 默认在每个轴上以 100 DPI 渲染。分辨率属性有一个值得了解的回退链:如果未显式设置 HorizontalResolution/VerticalResolution,它们会遵循已配置的 BaseConfig.ImageResolution,若仍未设置,则回退到 100。

csharp
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };

// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };

.NET 6 上的 DICOM 元数据可用性

支持 DICOM 页面渲染、单帧、动画、变换和水印。技术标签元数据在 .NET 6 包中不可用,因为元数据读取器没有 .NET 6 构建。

因此,Viewer.GetDicomMetadataAsync(token) 在 DICOM 会话中返回 null 并记录一次性警告。相应的 ?token=…&meta 中间件请求返回 HTTP 501 Not Implemented,错误码为 dicom_metadata_unsupported。当技术 DICOM 元数据是必需时,请使用 .NET 8 包。

完整配置参考

DicomConfig 完整属性表位于 API Reference → Format Configs。以下是参考应用中按扩展名切换的生产示例:

csharp
".DCM" or ".IMA" => new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames },

水印和内存行为

普通页面的水印决策同样适用于 DICOM 输出。对于动画输出,每个 GIF 帧都会加上水印,以确保在播放期间水印保持可见。仅当许可证路径允许自定义水印时才会使用自定义 DocOptions.Watermark;它不能替代评估版水印。

多帧研究可以生成动画以及每帧的静态页面。AnimationAndFrames 提供最丰富的导航,但也带来最高的渲染和缓存开销。针对大型研究:

  • 当帧检查比电影式播放更重要时,使用 FramesOnly
  • 在未测量内存的情况下,避免同时提升两个分辨率轴;
  • 当研究不再打开时,显式关闭会话;
  • 仅在重复访问的收益大于保留图像的成本时,才保持 CachePages 启用。

故障排除

症状检查
.dcm 不受支持DicomPlugin 注册和包部署
添加插件后启动失败已加载的许可证授予 Dicom
仅出现一页源可能是单帧,或 DisplayModeAnimationOnly
动画速度过快或过慢AnimationFrameDelayMs;实际 GIF 时序使用 10 毫秒单位
大多帧文件导致内存增长显示模式、分辨率、页面缓存以及显式会话关闭
元数据为 null,或 &meta 返回 501预期的 .NET 6 限制;渲染不受影响

此页面有帮助吗?