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文件相关推荐

  1. 使用 dcm4che 操作 Dicom 文件

    一.使用dcm4che3的准备工作 1.1.dcm4che git地址:GitHub - dcm4che/dcm4che: DICOM Implementation in JAVA 1.2. 执行 m ...

  2. 【转】DCMTK 开源库的学习笔记2:直接操作dcm文件中像素数据的尝试

    转自:https://blog.csdn.net/zssureqh/article/details/8785132 DCMTK官网给出了JPEG格式压缩的DCM文件解压缩的方法(http://supp ...

  3. DICOM:dcm4che工具包如何压缩dcm文件探讨(续篇)

    背景 前段时间博文 DICOM:dcm4che工具包如何压缩dcm文件探讨(前篇)提到了一个问题:"利用dcm4che工具包中的dcm2dcm来进行dcm文件的压缩和加压缩,即改变dcm文件 ...

  4. DICOM医学图像处理:DICOM存储操作之“多幅BMP图像数据存入DCM文件”

    背景: 本专栏"DICOM医学图像处理"受众较窄,起初只想作为自己学习积累和工作经验的简单整理.前几天无聊浏览了一下,发现阅读量两极化严重,主要集中在"关于BMP(JPG ...

  5. DICOM医学图像处理:DICOM存储操作之 “多幅JPG图像数据存入DCM文件”

    背景: 续上篇,继续介绍如何将多幅JPG图像数据存入DCM文件.即将有损压缩数据直接写入DCM文件,存储为Multi-frame形式. 多幅JPG图像数据存入DCM文件: 为了避免引起歧义,这里着重说 ...

  6. DICOM:dcm4che工具包如何压缩dcm文件探讨(前篇)

    背景: DICOM专栏系列中曾介绍过大多数的DICOM标准开源实现库,例如dcmtk.fo-dicom.mDCM,以及dcm4che.之前的介绍大都局限在表层,并未深入对比分析彼此的不同,因此在具体使 ...

  7. 使用dcm4che对压缩的dcm文件进行解压

    上一篇文章说到了DCM文件的无损压缩 DICOM DCM4CHE影像压缩 本想着压缩了就大功告成 在使用的时候可以大大减少网络上传输的时间 提高网站性能 但是新的问题又出现了 问题如下 代码中获取文件 ...

  8. java读取dcm影像文件_使用dcmtk库读取.dcm文件并获取信息+使用OpenCV显示图像

    借助VS2013和OpenCV的绘图功能,在工程DICOMReader.sln中实现了对单张.dcm图像的读取与显示,以下是详细步骤. 前期准备工作 编译器:VS2013 库:dcmtk-3.6.0( ...

  9. java解析dcm文件到jpg

    1,下载源码编译 下载dcm3che源码 mvn install 2,gradle/maven 引用 compile ('org.dcm4che.tool:dcm4che-tool-dcm2jpg:5 ...

  10. dcm4che解析DICOM文件生成JPEG图像

    dcm4che概述 dcm4che是为专注于医疗健康企业开发的基于DICOM标准的开源应用和工具的集合.目前最新的版本是dcm4che3.3.8.本片文章主要讲的是使用dcm4che3.3.8解析DI ...

最新文章

  1. 院长齐聚,答疑解惑 | 清华-青岛数据科学研究院“院长接待日”成功举办
  2. MD5加密以及验证加密-加盐
  3. 阿里内核月报2015年03月
  4. 阿里巴巴发布首个知识引擎研究计划,联合清华浙大等五大高校攻坚AI推理
  5. OpenCASCADE:Modeling Algorithms模块之制作原语Making Primitives
  6. php ci rest,在CodeIgniter框架中使用RESTful服务
  7. 老男孩36期运维脱产班---- 决心书
  8. 在SharePoint网站中访问Webservice被拒绝的解决方法
  9. Bootstrap 轮番插件Collapse 调用方式
  10. rtmp服务器 协议之同步
  11. 【CodeVS】p1174 靶形数独
  12. Deadline调度器之(二):细节和使用方法
  13. linux内存管理初始化
  14. 【C++】简易GIF生成器(斗图神器!必备!!!)持续更新~
  15. Win10编译和测试libModbus
  16. SVM-sklearn
  17. 计算机主板复位电路的组成,主板复位电路图解 - 主板知识
  18. 个人资料管理经验总结
  19. 如何输入“·”间隔号
  20. w7系统怎么开启打印机服务器,W7系统如何开启打印机服务

热门文章

  1. 英语单词常见后缀词性
  2. Blender的简单技巧——阵列、旋转、数组和曲线
  3. VS2013+VAX使用技巧
  4. 极易上手搭建自己日志采集服务器分析日志(winlogbeat+Elasticsearch+Kibana)
  5. 飞Young任意路由器连接[破解路由器限制]
  6. Struts中拦截器和过滤器的区别
  7. Brocade 光纤交换机配置命令
  8. 使用ESP8266模块在WIFI下通过网页远程控制LED开关
  9. office2016 64位下载链接
  10. 实战项目-python库分析科比生涯数据