dcm4che操作dcm文件
java操作dcm文件的开源库dcm4che使用介绍:
开源地址
GitHub地址:https://github.com/dcm4che/dcm4che
打包编译
使用git工具将源码拉取到本地仓库,用maven3将源码打包编译
命令:mvn install -Dmaven.test.skip=true
下面介绍使用打包好的jar对dcm文件的一些常用操作
dcm转jpg
/*** dcm转jpg* @param dcmFile dcm文件* @param jpgFile Jpg文件* @param quality 控制jpg文件清晰度(0-1),清晰度越高,文件越大* @return*/public static boolean dcm2jpg(File dcmFile, File jpgFile ,Number quality) {try {Dcm2Jpg dcm2jpg = new Dcm2Jpg();dcm2jpg.initImageWriter("JPEG", null, "com.sun.imageio.plugins.*", null, quality);dcm2jpg.convert(dcmFile, jpgFile);return true;} catch (Exception e) {e.printStackTrace();}return false;}
dcm转png
/*** dcm转jpg* @param dcmFile dcm文件* @param pngFile png文件* @return*/public static boolean dcm2png(File dcmFile, File pngFile) {try {Dcm2Jpg dcm2jpg = new Dcm2Jpg();dcm2jpg.initImageWriter("PNG", null, "com.sun.imageio.plugins.*", null, null);dcm2jpg.convert(dcmFile, pngFile);return true;} catch (Exception e) {e.printStackTrace();}return false;}
dcm转实体bean
DcmModel是自己定义的实体bean,自己可以定义dcm属性,从Tag里面去获取想要的值
/*** dcm文件提取Tag值,将数据封装到DcmModel* @param dcmPath dcm文件路径* @return DcmModel*/public static DcmModel dcm2Attributes(String dcmPath){DicomInputStream dicomInputStream;DcmModel dcmModel = new DcmModel();try {File file = new File(dcmPath);dicomInputStream = new DicomInputStream(file);Attributes attributes = dicomInputStream.readDataset(-1,-1);dcmModel.setAge(attributes.getString(Tag.PatientAge));dcmModel.setBirth(attributes.getString(Tag.PatientBirthDate));dcmModel.setPatientName(attributes.getString(Tag.PatientName));return dcmModel;}catch (Exception e){e.printStackTrace();}finally {dicomInputStream.close();}return null;}
dcm转xml
需获取dcm的Attributes属性,将属性赋值到自己定义的实体对象中,我这是DcmModel对象,定义了名字,年龄,患者号等属性
/*** DcmModel转xml* @param dcmModel 存储dcm中Tag信息的对象* @param xmlFile xml文件* @return*/public static boolean beanToXml(DcmModel dcmModel,File xmlFile){JAXBContext context;Marshaller marshaller;try {context = JAXBContext.newInstance(dcmModel.getClass());marshaller = context.createMarshaller();marshaller.marshal(dcmModel, xmlFile);return true;} catch (JAXBException e) {e.printStackTrace();}return false;}
实体类上使用注解:
@Data @XmlRootElement @XmlAccessorType(XmlAccessType.FIELD)
属性上使用注解:
@XmlElement
dcm转raw
/*** dcm文件转raw* @param dcmFile dcm文件路径* @param rawFile raw文件路径* @return*/public static boolean dcm2raw(File dcmFile,File rawFile){try {DicomInputStream dis = new DicomInputStream(dcmFile);OutputStream outputStream = new FileOutputStream(rawFile);try{Attributes d = dis.readDataset(-1, -1);//获取dicom中图像信息(原始二进制文件)byte[] pixelData = d.getBytes(Tag.PixelData);outputStream.write(pixelData);outputStream.flush();return true;}catch (Exception e){e.printStackTrace();}finally {outputStream.close();dis.close();}} catch (IOException e) {e.printStackTrace();}return false;}
当然还可以转很多类型的文件,自己可以参考源码,以下是可以实现的工具类
常见问题
获取到的tag属性因为是中文的,导致乱码
可以直接设置编码,操作Attributes,如下即可:
attributes.setString(Tag.SpecificCharacterSet, VR.LO,"GB18030");
有问题可留言,jar包的话不想自己打包编译可直接私聊提供邮箱,对您有帮助的话请点个赞或者关注哦!
dcm4che操作dcm文件相关推荐
- 使用 dcm4che 操作 Dicom 文件
一.使用dcm4che3的准备工作 1.1.dcm4che git地址:GitHub - dcm4che/dcm4che: DICOM Implementation in JAVA 1.2. 执行 m ...
- 【转】DCMTK 开源库的学习笔记2:直接操作dcm文件中像素数据的尝试
转自:https://blog.csdn.net/zssureqh/article/details/8785132 DCMTK官网给出了JPEG格式压缩的DCM文件解压缩的方法(http://supp ...
- DICOM:dcm4che工具包如何压缩dcm文件探讨(续篇)
背景 前段时间博文 DICOM:dcm4che工具包如何压缩dcm文件探讨(前篇)提到了一个问题:"利用dcm4che工具包中的dcm2dcm来进行dcm文件的压缩和加压缩,即改变dcm文件 ...
- DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”
背景: 本专栏"DICOM医学图像处理"受众较窄,起初只想作为自己学习积累和工作经验的简单整理.前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在"关于BMP(JPG ...
- DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”
背景: 续上篇,继续介绍如何将多幅JPG图像数据存入DCM文件.即将有损压缩数据直接写入DCM文件,存储为Multi-frame形式. 多幅JPG图像数据存入DCM文件: 为了避免引起歧义,这里着重说 ...
- DICOM:dcm4che工具包如何压缩dcm文件探讨(前篇)
背景: DICOM专栏系列中曾介绍过大多数的DICOM标准开源实现库,例如dcmtk.fo-dicom.mDCM,以及dcm4che.之前的介绍大都局限在表层,并未深入对比分析彼此的不同,因此在具体使 ...
- 使用dcm4che对压缩的dcm文件进行解压
上一篇文章说到了DCM文件的无损压缩 DICOM DCM4CHE影像压缩 本想着压缩了就大功告成 在使用的时候可以大大减少网络上传输的时间 提高网站性能 但是新的问题又出现了 问题如下 代码中获取文件 ...
- java读取dcm影像文件_使用dcmtk库读取.dcm文件并获取信息+使用OpenCV显示图像
借助VS2013和OpenCV的绘图功能,在工程DICOMReader.sln中实现了对单张.dcm图像的读取与显示,以下是详细步骤. 前期准备工作 编译器:VS2013 库:dcmtk-3.6.0( ...
- java解析dcm文件到jpg
1,下载源码编译 下载dcm3che源码 mvn install 2,gradle/maven 引用 compile ('org.dcm4che.tool:dcm4che-tool-dcm2jpg:5 ...
- dcm4che解析DICOM文件生成JPEG图像
dcm4che概述 dcm4che是为专注于医疗健康企业开发的基于DICOM标准的开源应用和工具的集合.目前最新的版本是dcm4che3.3.8.本片文章主要讲的是使用dcm4che3.3.8解析DI ...
最新文章
- 院长齐聚,答疑解惑 | 清华-青岛数据科学研究院“院长接待日”成功举办
- MD5加密以及验证加密-加盐
- 阿里内核月报2015年03月
- 阿里巴巴发布首个知识引擎研究计划,联合清华浙大等五大高校攻坚AI推理
- OpenCASCADE:Modeling Algorithms模块之制作原语Making Primitives
- php ci rest,在CodeIgniter框架中使用RESTful服务
- 老男孩36期运维脱产班---- 决心书
- 在SharePoint网站中访问Webservice被拒绝的解决方法
- Bootstrap 轮番插件Collapse 调用方式
- rtmp服务器 协议之同步
- 【CodeVS】p1174 靶形数独
- Deadline调度器之(二):细节和使用方法
- linux内存管理初始化
- 【C++】简易GIF生成器(斗图神器!必备!!!)持续更新~
- Win10编译和测试libModbus
- SVM-sklearn
- 计算机主板复位电路的组成,主板复位电路图解 - 主板知识
- 个人资料管理经验总结
- 如何输入“·”间隔号
- w7系统怎么开启打印机服务器,W7系统如何开启打印机服务