☰
Weasis医学影像查看器:DICOM桌面与Web部署及PACS集成实战
2026/10/14 15:15:25 网站建设 项目流程

简介:Weasis 是一款免费开源的医疗 DICOM 查看器,既可作为桌面应用运行于 Windows、Mac OS X 与 Linux,也能通过 weasis 协议在 Web 端访问,适用于医院、健康网络、多中心研究试验及患者个人医疗场景。它支持灵活集成到 HIS 或 PHR 系统,具备多国语言界面、服务端与客户端偏好配置、自定义插件 API,以及 DICOM 发送(storeSCU、STOW-RS)、查询检索(C-GET、C-MOVE、WADO-URI)与 DICOMWeb 等能力,还可嵌入 CD/DVD 等便携介质作为随身查看器。本资源为 zip 压缩包,整体约 2.54MB,包内文件总数与类型明细上游暂未提供,从标签看主要涉及 dicom-images、dicom-rt、dicom-pr 等医学影像与 Java 相关文件。目前已有 1089 人浏览学习,适合医学影像开发、PACS 集成及 Java 桌面/Web 应用方向的读者参考,可借此了解 Weasis 的构建分支(master 为 3.xx 需 Java 8+,旧分支 2.5.x/2.0.x/1.2.x 需 Java 6+)与整体功能架构。

1. 从一台阅片工作站说起:Weasis 到底解决了什么问题

影像科或临床科室的日常里,经常出现这样的场景:设备导出的 DICOM 文件散落在移动硬盘、PACS 导出目录或某个共享盘里,需要快速打开、比对、测量、导出,但手头只有一台普通办公电脑,装不了厂商那套笨重的专用工作站。这时候一个能直接跑在桌面、也能嵌进浏览器里的 DICOM 查看器就非常关键。Weasis 就是干这个的:它是一套基于 Java 的医学影像查看器,既能作为桌面应用独立运行,也能以 Web 应用的形式部署,支持 DICOM、DICOM RT、DICOM PR 等常见对象,还能做导出、测量、多序列布局。它适合影像科工程师、PACS 运维、医学影像软件开发者和需要做 DICOM 二次处理的从业者。下面我按“能干什么 → 怎么跑起来 → 怎么接自己的数据 → 坑在哪 → 怎么进阶”的顺序,把这份资源拆开讲清楚。

2. Weasis 的架构与运行方式:桌面端和 Web 端怎么选

2.1 为什么是 Java + OSGi,而不是一个单体程序

Weasis 的核心是一套基于 Java 的模块化框架,底层用 OSGi 做插件管理。这个选型直接决定了它的两个特性:第一,跨平台,Windows、Linux、macOS 上只要有合适的 JRE 就能跑;第二,功能可以按插件拆,比如 DICOM 解析、影像渲染、测量工具、导出模块都是独立 bundle,需要裁剪或扩展时不用动整个工程。常见做法是:桌面端直接下载带 JRE 的安装包,开箱即用;Web 端则用 JNLP 或 WebStart 方式把客户端拉起来,浏览器只负责启动和传参。这里要注意,Web 端并不是把影像渲染放在服务端,而是把查看器下发到本地执行,所以对客户端 Java 环境有要求。如果你只是临时看几个 DICOM 文件,桌面端最省事;如果要集成到自己的 Web 平台里,才需要研究 Web 启动参数和 URL 传参。

2.2 桌面端启动与基础配置

桌面端最直接的用法是下载对应平台的安装包,解压后运行启动脚本。以 Linux 为例,常见做法是给启动脚本加执行权限再运行:

# 进入解压后的目录 cd weasis-portable # 给启动脚本加执行权限 chmod +x weasis.sh # 启动,-Xmx 控制 JVM 最大堆,影像多时建议调大 ./weasis.sh -Xmx2048m

逻辑说明:weasis.sh是官方便携包里的启动入口,内部会拼 JVM 参数并加载 OSGi 框架。参数说明:-Xmx2048m把最大堆设到 2GB,处理多序列或大尺寸 CT/MR 时能减少频繁 GC 导致的卡顿;如果机器内存小,可以降到 1024m,但打开多序列会明显变慢。Windows 下对应的是weasis.exe或weasis.bat,配置方式类似。启动后第一件事是进偏好设置,把 DICOM 节点、缓存目录和默认布局调好,否则每次打开都要重新拖布局。

2.3 Web 端部署与 URL 传参

Web 端的典型做法是把 Weasis 的 Web 包部署到自己的 HTTP 服务下,然后通过 URL 把要打开的检查或文件传进去。常见参数包括$dicom:get指定 DICOM 来源,$dicom:close控制关闭行为。下面是一个示意性的启动 URL 结构:

# 假设 Web 包部署在 /weasis 下 # 通过 URL 传入一个 DICOM 文件地址 http://your-host/weasis/weasis.html?$dicom:get=http://your-pacs/wado?requestType=WADO&studyUID=1.2.3&seriesUID=4.5.6

逻辑说明:浏览器打开这个地址后,Weasis 的 Web 启动器会解析$dicom:get后面的地址,向 PACS 发起 WADO 请求拉取影像。参数说明:studyUID和seriesUID是 DICOM 唯一标识,必须和 PACS 里的实际值一致;requestType=WADO表示走 DICOM Web 的 WADO 接口。这里最容易翻车的是跨域和认证:如果 PACS 和 Weasis 不在同一个域,浏览器会拦请求,需要在服务端配 CORS 或改用同源代理。另外,Web 端依赖客户端 Java,如果终端没装或版本不对,页面只会白屏,不会给太明确的提示。

3. 接入自己的 DICOM 数据:从本地目录到 PACS 查询

3.1 本地 DICOM 目录的导入与索引

Weasis 支持直接打开本地文件夹或单个 DICOM 文件。常见做法是先把文件按检查/序列整理好,再用“导入”功能指向目录。它内部会解析 DICOM 标签,按 StudyInstanceUID、SeriesInstanceUID 分组,然后生成缩略图和序列列表。这里有个细节:如果目录里混了非 DICOM 文件,导入过程会跳过并记日志,不会直接崩,但日志里会有一堆警告,别被吓到。对于 DICOM RT 和 DICOM PR 这类对象,Weasis 也能识别,但前提是标签完整,尤其是 RT 的 ROI 和 PR 的图形注释,缺标签就会显示为空。

3.2 配置 DICOM 节点做查询检索

如果要连 PACS,需要在偏好设置里加 DICOM 节点。关键参数如下表:

参数说明常见取值
AE Title本地 AE 名称WEASIS
HostPACS 地址10.0.0.10
PortDICOM 端口104 或 11112
Query/Retrieve是否启用查询检索勾选
Transfer Syntax传输语法默认即可,特殊压缩需额外插件

配置完后,在查询面板里按患者 ID、检查日期或模态检索,找到检查后直接拉取。逻辑上走的是 DICOM C-FIND 和 C-MOVE,所以 PACS 端要允许你的 AE Title 发起请求。参数说明:AE Title 必须和 PACS 白名单里登记的一致,否则会被拒绝;端口别填成 Web 端口,DICOM 和 HTTP 是两套。如果检索能出结果但拉取失败,多半是 C-MOVE 的目标 AE 没配对,需要检查 PACS 那边的配置。

3.3 导出 DICOM 与格式转换

Weasis 的导出功能支持把当前序列导出为 DICOM 文件,也支持导出图像为常见格式。常见做法是:选中序列,右键导出,选择目标目录和格式。导出 DICOM 时会保留原始标签,但如果你做过测量或注释,这些会作为 DICOM PR 对象单独导出,不会直接烧进像素。参数上要注意:导出图像时可以选择是否包含测量标注,如果用于科研或汇报,建议保留标注层;如果只是做插图,可以只导像素。导出路径不要选在正在被 PACS 同步的目录里,否则可能触发重复入库。

4. 避坑与排查:那些让我返工过的细节

4.1 启动报 Java 版本不兼容

现象:双击启动脚本后闪退,日志里出现 UnsupportedClassVersionError。原因:Weasis 的不同版本对 JRE 有最低要求,系统里默认的 Java 太旧。解决:先java -version确认版本,然后要么升级系统 Java,要么在启动脚本里显式指定JAVA_HOME指向新版 JRE。我一般会在脚本开头加一行export JAVA_HOME=/path/to/jre,避免依赖系统默认。

4.2 Web 端打开白屏或一直转圈

现象:浏览器访问 Weasis Web 地址后页面空白,或者卡在加载界面。原因:客户端没有 Java 运行环境,或者浏览器禁用了相关插件机制。解决:先确认终端能跑桌面版;如果桌面版正常,再检查浏览器设置。另外,Web 启动器对 URL 参数很敏感,参数拼错不会报错,只会静默失败,建议先用最简单的$dicom:get指向一个本地文件测试。

4.3 DICOM 文件能导入但显示花屏或全黑

现象:序列列表里有图像,但预览是黑的或者颜色异常。原因:多半是传输语法或像素数据编码不被当前插件支持,比如某些压缩格式需要额外的解码器。解决:先用其他工具确认文件本身没问题,然后在 Weasis 里看日志,通常会提示不支持的 Transfer Syntax。常见做法是装对应的解码插件,或者让 PACS 以未压缩格式重发。

4.4 测量数据导出后丢失

现象:在 Weasis 里画的 ROI 和测量值,导出后在新环境打开不见了。原因:测量和注释默认存为 DICOM PR 对象,如果导出时只选了图像序列,PR 对象没被一起导出。解决:导出时勾选包含注释和测量,或者单独导出 PR 序列。另外,有些查看器不识别 PR,需要确认目标环境支持。

4.5 多序列布局每次都要重拖

现象:每次打开新检查,布局都回到默认,之前调好的 2x2 或 1x3 没了。原因:布局配置没有保存为默认,或者缓存被清。解决:在偏好设置里把当前布局设为默认,并确认缓存目录可写。如果是在 Web 端,布局可能跟会话绑定,需要检查启动参数里有没有传布局配置。

5. 进阶用法:把 Weasis 嵌进自己的流程里

5.1 用命令行参数做批量打开

Weasis 支持通过命令行直接传入 DICOM 文件或目录,适合做批量检查。比如:

# 直接打开指定目录下的所有 DICOM ./weasis.sh -Xmx2048m /data/dicom/study_001 # 同时打开多个目录 ./weasis.sh /data/dicom/study_001 /data/dicom/study_002

逻辑说明:启动脚本会把路径参数传给 Weasis 的导入模块,自动扫描并分组。参数说明:路径可以是文件或目录,多个路径用空格隔开;如果路径里有空格,记得加引号。这个用法在写自动化脚本时很有用,比如从 PACS 拉完检查后直接调 Weasis 打开。

5.2 自定义插件与扩展点

Weasis 的 OSGi 架构允许你写自己的 bundle 来扩展功能,比如加一个自定义的测量工具或导出格式。常见做法是参考官方插件工程,实现对应的接口,然后打包成 bundle 放进 plugins 目录。这里要注意版本匹配:Weasis 主版本升级时,插件接口可能变,旧插件不一定能直接用。我一般会先在测试环境验证,再推到生产。

5.3 验证部署是否成功的几个检查点

检查项方法预期结果
桌面端启动运行启动脚本出现主界面,无报错
本地导入打开一个 DICOM 目录序列列表和预览正常
PACS 查询配置节点后检索能查到检查并拉取
Web 启动浏览器访问 Web 地址查看器加载,能打开指定检查
导出导出序列和 PR目标目录有文件,标签完整

这些检查点走一遍,基本能覆盖大部分部署问题。如果某一步失败,先看日志,Weasis 的日志通常在用户目录下的.weasis文件夹里,里面会记录详细的错误堆栈。

5.4 一个我常犯的错误

早期我总以为 Web 端就是把桌面端搬到浏览器里,后来才发现它其实是把客户端下发到本地执行,所以客户端的 Java 环境、缓存目录、权限都会影响体验。从那以后我每次部署 Web 端,都会先在一台干净终端上跑一遍桌面版,确认 Java 没问题,再去看 Web 启动参数。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询