DICOM 插件
使用 DicomPlugin 查看医学图像
DICOM 插件为 Doconut 添加了医学图像查看功能:多帧 DICOM 文件可以渲染为动画概览、单独帧或两者兼有。DICOM 是一种 仅插件格式 —— 没有此插件(及其许可证功能),.dcm 文件根本无法打开。
在 .NET Framework 4.7.2 上,DICOM 文件能够完整渲染 —— 页面、帧和动画 —— 但技术元数据(DICOM 标签)不可用。
Viewer.GetDicomMetadataAsync总是返回null,且小部件的元数据请求返回501 Not Implemented。如果您的应用程序需要这些标签,请使用Doconut.NET8。
安装包
Install-Package Doconut.NETFramework.Dicom保持 DICOM 包的版本与 Doconut.NETFramework 相同。
注册插件
Doconut.DoconutHost.Initialize(options =>
{
options.AddPlugin<Doconut.Plugins.Dicom.DicomPlugin>();
});插件(Name:"Doconut DICOM Viewer")为 .dcm 和 .ima 扩展名注册查看器,并受 Dicom 能力的限制。如果许可证未授予此能力,DoconutHost.Initialize 会在 Application_Start 中抛出异常,站点会对每个请求返回空的 500(原因记录在 Windows 事件日志中)。由于没有内置查看器能够处理这些格式,如果该能力随后不可用,打开文件将直接失败:
LicenseException: This document type requires the 'Dicom' plugin license.打开 DICOM 文件
var token = await viewer.OpenDocumentAsync(path, new DicomConfig
{
DisplayMode = DicomDisplayMode.AnimationAndFrames
});显示模式
多帧 DICOM 文件可以通过三种方式呈现(DicomDisplayMode):
| 模式 | 生成的页面 | 适用场景 |
|---|---|---|
AnimationOnly | 第 1 页 = 循环所有帧的动画 GIF | 快速电影式回顾 |
FramesOnly | 第 1..N 页 = 每帧一个静态 PNG | 帧逐帧的诊断导航 |
AnimationAndFrames (默认) | 第 1 页 = 动画 GIF, 第 2..N 页 = 静态帧 | 在同一文档中提供概览和细节 |
动画时长由 AnimationFrameDelayMs(默认 100 ms = 10 FPS;GIF 时长使用 10 ms 单位)和 LoopCount(0 = 永久循环)控制。
查看器通过对第 1 页发送 HEAD 请求来判断其是否为动画。因此 DocImage.axd 处理程序必须在 Web.config 中接受 HEAD(verb="GET,HEAD,POST",参见 安装);如果未配置,IIS 会在 Doconut 运行前返回 404,导致动画检测失效。
分辨率
DicomConfig 默认以每轴 100 DPI 渲染。如果未显式设置 HorizontalResolution/VerticalResolution,它们会遵循已设置的 BaseConfig.ImageResolution,否则回退到 100。
// Uniform bump via the base property…
new DicomConfig { ImageResolution = 150 };
// …or per-axis control
new DicomConfig { HorizontalResolution = 200, VerticalResolution = 150 };DICOM 元数据
var metadata = await viewer.GetDicomMetadataAsync(token);
// On .NET Framework this is always null: the DICOM metadata reader is not available for this
// target. Pages, frames and animation render normally.此方法存在于该包中,以便与 .NET 8 包共享的代码能够编译,但读取 DICOM 标签需要一个没有 .NET Framework 构建的组件。请在没有标签的情况下规划用户界面,例如在结果为 null 时隐藏元数据面板。
完整配置参考
完整的 DicomConfig 属性表位于 格式配置。在按扩展名选择时,DICOM 情况如下:
case ".DCM": case ".IMA":
return new DicomConfig { DisplayMode = DicomDisplayMode.AnimationAndFrames };水印与内存行为
普通页面水印决策同样适用于 DICOM 输出。对于动画输出,每个 GIF 帧都会加上水印,因此在播放期间水印始终可见。仅当许可证允许自定义水印时,才会使用自定义 DocOptions.Watermark,它不能替代评估水印。
多帧研究可以同时生成动画和每帧的静态页面。AnimationAndFrames 提供最丰富的导航体验,但也带来最高的渲染和内存开销——这些内存属于 IIS 工作进程。在大型研究中:
- 当帧检查比播放更重要时使用
FramesOnly; - 在未测量内存之前避免同时提升两个分辨率轴;
- 当研究不再打开时显式关闭会话;
- 仅在重复访问值得保留图像时才开启
CachePages。
故障排查
| 症状 | 检查 |
|---|---|
.dcm 被报告为不受支持 | DicomPlugin 注册和包部署 |
添加插件后每个请求返回空的 500 | 许可证已授予 Dicom —— Windows 事件日志,源 ASP.NET |
| 仅出现一页 | 源可能是单帧,或 DisplayMode 为 AnimationOnly |
| 第 1 页未动画 | Web.config 中的处理程序接受 HEAD |
| 动画太快或太慢 | AnimationFrameDelayMs;GIF 时间使用 10 ms 单位 |
| 大型多帧文件导致内存增长 | 显示模式、分辨率、页面缓存以及显式会话关闭 |
元数据始终为 null | 此包中预期如此 —— 请参阅顶部说明 |
此页面对您有帮助吗?