日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DICM文件转图片

發布時間:2023/12/31 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DICM文件转图片 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考1?JAVA代碼實現DICOM文件轉換JPG

JAVA代碼實現DICOM文件轉換JPG_wxx的記錄窩-CSDN博客

package com.example;import java.awt.image.BufferedImage; import java.io.File;import javax.imageio.ImageIO;import ij.plugin.DICOM;/*** dicom文件java解析,生成圖片* 不過這里不能解析壓縮的dicom文件*/ public class ImageDemo {public static void main(String args[]) { // create("test1.dcm"); //在本地目錄生成test1.dcm.jpg圖片文件create2("D:\\dicom\\test3.dcm"); //在電腦dicom文件夾下生成test1.dcm.jpg圖片文件}/*** 根據dicom文件生成jpg圖片* <p/>* 這里輸入的是image文件夾的dicom文件名字,* 運行即可得到一個jpg圖片,顯示的是dicom里面的圖形*/private static void create(String fileName) {try {String projectPath = System.getProperty("user.dir");//Check class DICOMDICOM dicom = new DICOM();String imagePath = projectPath + "\\image\\" + fileName;dicom.run(imagePath);BufferedImage bi = (BufferedImage) dicom.getImage();int width = bi.getWidth();int height = dicom.getHeight();System.out.println("width: " + width + "\n" + "height: " + height);imagePath = projectPath + "\\image\\" + fileName + ".jpg";ImageIO.write(bi, "jpg", new File(imagePath));System.out.println("Hehe,Game over!!!");} catch (Exception e) {System.out.println("錯誤" + e.getMessage());}}/*** 輸入一個dicom文件的絕對路徑和名字* 獲取一個jpg文件*/private static void create2(String filePath) {try {DICOM dicom = new DICOM();dicom.run(filePath);BufferedImage bi = (BufferedImage) dicom.getImage();int width = bi.getWidth();int height = dicom.getHeight();System.out.println("width: " + width + "\n" + "height: " + height);String imagePath = filePath + ".jpg";ImageIO.write(bi, "jpg", new File(imagePath));System.out.println("Hehe,Game over!!!");} catch (Exception e) {System.out.println("錯誤" + e.getMessage());}}}

參考2?使用java實現dcm文件轉jpg

由于相關的jar基本直接搞不到,需要自己編譯jar。這里提供直接帶有jar的項目,免去編譯問題,很多時候編譯失敗。

jar一共需要4個:

dcm4che-core-5.20.0.jar

dcm4che-imageio-5.20.0.jar

dcm4che-image-5.20.0.jar

slf4j-api-1.7.30.jar

如果能拿到這幾個jar基本隨便百度搜索就能解決了。

代碼地址:svn://47.105.188.20/kitty/2、code/bunny_dcmtool? 用戶名密碼:?reader reader

只需要一個主文件即可:

package club.kittybunny.tool.dcmfile;import org.dcm4che3.data.Attributes; import org.dcm4che3.imageio.plugins.dcm.DicomImageReadParam;import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader;import javax.imageio.stream.ImageInputStream;import java.awt.image.BufferedImage;import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator;public class Dcm2Jpg2 {private final ImageReader imageReader = ImageIO.getImageReadersByFormatName("DICOM").next();private float windowCenter;private float windowWidth;private boolean autoWindowing = true;private int windowIndex;private int voiLutIndex;private boolean preferWindow = true;private Attributes prState;private int overlayActivationMask = 0xffff;private int overlayGrayscaleValue = 0xffff;private int frame = 1; /*** 通過制定源文件目錄和目標文件目錄,實現dcm轉jpg格式* @param args* @throws Exception*/public static void main(String[] args) throws Exception {//源文件加目錄全路徑,結尾用/結束,只處理里面dcm格式文件 ,例如"/home/bunny/桌面/src/"String src = "/home/bunny/Downloads/qq-files/1023354682/file_recv/3000566.000000-03192/";//目標路徑全路徑,將源文件加內所有dcm文件轉換為同名jpg文件,使用/結束,;例如 "/home/bunny/桌面/w/dcm/"String out = "/home/bunny/桌面/w/dcm/";if (args.length >= 2) {src = args[0];out = args[1];}File f = new File(src);//讀取到所有文件名String[] arr = f.list();for (int i = 0; i < arr.length; i++) {//篩選符合條件的文件處理if (arr[i].endsWith(".dcm")) {InputStream in = new FileInputStream(src + arr[i]);ByteArrayOutputStream byteArrayOutputStream = new Dcm2Jpg2().convert(in, null);FileOutputStream fileOutputStream = null;try {fileOutputStream = new FileOutputStream(out + arr[i].substring(0, arr[i].lastIndexOf("."))+".jpg");fileOutputStream.write(byteArrayOutputStream.toByteArray());} catch (IOException e) {e.printStackTrace();}}}}/*** * 實現單文件的dcm轉jpg* @param src dcm文件流* @param name oss的getFileName* @throws Exception*/public ByteArrayOutputStream convert(InputStream src, String name) throws Exception {Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM");ImageReader reader = iter.next();try (ImageInputStream iis = ImageIO.createImageInputStream(src)) {reader.setInput(iis, false);BufferedImage bi = readImage(iis);if (bi == null) {throw new Exception("無法讀取到圖片");}ByteArrayOutputStream os = new ByteArrayOutputStream();ImageIO.write(bi, "jpg", os);return os;} catch (IOException e) {e.printStackTrace();return null;}}private ImageReadParam readParam() {DicomImageReadParam param = (DicomImageReadParam) imageReader.getDefaultReadParam();param.setWindowCenter(windowCenter);param.setWindowWidth(windowWidth);param.setAutoWindowing(autoWindowing);param.setWindowIndex(windowIndex);param.setVOILUTIndex(voiLutIndex);param.setPreferWindow(preferWindow);param.setPresentationState(prState);param.setOverlayActivationMask(overlayActivationMask);param.setOverlayGrayscaleValue(overlayGrayscaleValue);return param;}private BufferedImage readImage(ImageInputStream iis) throws IOException {imageReader.setInput(iis);return imageReader.read(frame - 1, readParam());} }

附帶可執行jar的說明文件:

先將需要轉換的dcm文件統一放到一個文件夾內,然后創建轉換后文件的文件夾,文件夾全路徑不能有空格。 執行命令例如: java -jar dcm2jpg.jar /home/bunny/Downloads/qq-files/1023354682/file_recv/3000566.000000-03192/ /home/bunny/桌面/w/new/其中第一個參數是源文件所在目錄。 第二個參數是轉換后文件艘在目錄。 所有目錄需要“/”結尾。上面示例,命令中 "/home/bunny/Downloads/qq-files/1023354682/file_recv/3000566.000000-03192/"是原文件所在目錄; "/home/bunny/桌面/w/new/" 是轉換后文件所在目錄。

參考3?java解析dcm文件到jpg

java解析dcm文件到jpg_zhy的博客-CSDN博客

1,下載源碼編譯

下載dcm3che源碼

mvn install
2,gradle/maven 引用
compile ('org.dcm4che.tool:dcm4che-tool-dcm2jpg:5.20.0'){
? ? ? ? exclude group: 'org.slf4j',module: 'slf4j-log4j12'
? ? }
3,編寫工具類?

import lombok.Setter; import lombok.extern.slf4j.Slf4j; import org.dcm4che3.data.Attributes; import org.dcm4che3.imageio.plugins.dcm.DicomImageReadParam;import javax.imageio.ImageIO; import javax.imageio.ImageReadParam; import javax.imageio.ImageReader; import javax.imageio.stream.ImageInputStream; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator;/*** dcm轉jpg工具** @author zhy*/ @Setter @Slf4j public class Dcm2jpgUtil {private final ImageReader imageReader = ImageIO.getImageReadersByFormatName("DICOM").next();private float windowCenter;private float windowWidth;private boolean autoWindowing = true;private int windowIndex;private int voiLutIndex;private boolean preferWindow = true;private Attributes prState;private int overlayActivationMask = 0xffff;private int overlayGrayscaleValue = 0xffff;private int frame = 1;/*** 解析dcm獲取圖片并上傳oss** @param src dcm文件流* @param name oss的getFileName*/public void convert(InputStream src, String name) {Iterator<ImageReader> iter = ImageIO.getImageReadersByFormatName("DICOM");ImageReader reader = iter.next();try (ImageInputStream iis = ImageIO.createImageInputStream(src)) {reader.setInput(iis, false);BufferedImage bi = readImage(iis);if (bi == null) {throw new 自定義異常("無法讀取到圖片");}ByteArrayOutputStream os = new ByteArrayOutputStream();ImageIO.write(bi, "jpg", os);//上傳到ossOssUtil.uploadByInputStream(new ByteArrayInputStream(os.toByteArray()), name);} catch (IOException e) {log.error(e.getMessage(), e);}}private ImageReadParam readParam() {DicomImageReadParam param = (DicomImageReadParam) imageReader.getDefaultReadParam();param.setWindowCenter(windowCenter);param.setWindowWidth(windowWidth);param.setAutoWindowing(autoWindowing);param.setWindowIndex(windowIndex);param.setVOILUTIndex(voiLutIndex);param.setPreferWindow(preferWindow);param.setPresentationState(prState);param.setOverlayActivationMask(overlayActivationMask);param.setOverlayGrayscaleValue(overlayGrayscaleValue);return param;}private BufferedImage readImage(ImageInputStream iis) throws IOException {imageReader.setInput(iis);return imageReader.read(frame - 1, readParam());} }

參考4?java代碼使用ImageJ解析dicom文件成圖片

java代碼使用ImageJ解析dicom文件成圖片_wenzhi的博客-CSDN博客

Dicom全稱是醫學數字圖像與通訊,這里講java解析diocm格式文件變成jpg示例。
這里的代碼只能解析普通的dicom文件成jpg圖片,對于壓縮的dicom文件是沒有辦法解析的!
先看效果:
解析到本地目錄:


解析到本地電腦:


ImageJ解析代碼很簡單,但是要導入ImageJ的jar包。
從第一個圖片可以看到lib中導入了ij.jar,這就是ImageJ的jar包,下面那個zip是source文件,這樣就可以看到ImageJ里面的源碼。

下面是調用ImageJ的代碼:

import ij.plugin.DICOM;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File;/*** dicom文件java解析,生成圖片* 不過這里不能解析壓縮的dicom文件*/ public class ImageDemo {public static void main(String args[]) { // create("test1.dcm"); //在本地目錄生成test1.dcm.jpg圖片文件create2("D:\\dicom\\test3.dcm"); //在電腦dicom文件夾下生成test1.dcm.jpg圖片文件}/*** 根據dicom文件生成jpg圖片* <p/>* 這里輸入的是image文件夾的dicom文件名字,* 運行即可得到一個jpg圖片,顯示的是dicom里面的圖形*/private static void create(String fileName) {try {String projectPath = System.getProperty("user.dir");//Check class DICOMDICOM dicom = new DICOM();String imagePath = projectPath + "\\image\\" + fileName;dicom.run(imagePath);BufferedImage bi = (BufferedImage) dicom.getImage();int width = bi.getWidth();int height = dicom.getHeight();System.out.println("width: " + width + "\n" + "height: " + height);imagePath = projectPath + "\\image\\" + fileName + ".jpg";ImageIO.write(bi, "jpg", new File(imagePath));System.out.println("Hehe,Game over!!!");} catch (Exception e) {System.out.println("錯誤" + e.getMessage());}}/*** 輸入一個dicom文件的絕對路徑和名字* 獲取一個jpg文件*/private static void create2(String filePath) {try {DICOM dicom = new DICOM();dicom.run(filePath);BufferedImage bi = (BufferedImage) dicom.getImage();int width = bi.getWidth();int height = dicom.getHeight();System.out.println("width: " + width + "\n" + "height: " + height);String imagePath = filePath + ".jpg";ImageIO.write(bi, "jpg", new File(imagePath));System.out.println("Hehe,Game over!!!");} catch (Exception e) {System.out.println("錯誤" + e.getMessage());}}}

ImageJ的jar包和dicom文件可以看我的項目。
我的項目資源地址:https://github.com/liwenzhi/ImageJDemo

其中我的dicom文件test2.dcm和test5.dcm是壓縮的dicom文件,不能解析成jpg,運行代碼會報空!
其他dicom文件都是能生成jpg圖片的。


dicom傳輸的相關知識也只能介紹到這里,上面很多知識還沒有理解透徹,只是把這些知識羅列出來,給大家參考一下!

dicom文件解析知識的其他地址:
1.dicom文件詳解
http://blog.csdn.net/wenzhi20102321/article/details/75127362

2.dicom文件的值類型VR詳解
http://blog.csdn.net/wenzhi20102321/article/details/75127140

3.dicom文件tag詳解
http://blog.csdn.net/wenzhi20102321/article/details/75127101

4.android 解析并顯示dicom文件的數據和圖像
http://blog.csdn.net/wenzhi20102321/article/details/75040225

5.java代碼使用ImageJ解析dicom文件成圖片
http://blog.csdn.net/wenzhi20102321/article/details/74995084

前面5個是我自己寫的,后面是一些我自己看過的相關資料:

6.Dicom文件解析
http://blog.csdn.net/leaf6094189/article/details/8510325

7.使用dcm4che3獲取Dicom的bmp格式縮略圖
http://blog.csdn.net/Kerrigeng/article/details/60866656

8.使用dcm4che3解析DICOM中,中文亂碼問題
http://blog.csdn.net/Kerrigeng/article/details/53942846

9.使用dcm4che3對jpeg壓縮的dcm文件進行解壓
http://blog.csdn.net/Kerrigeng/article/details/62215647

10.DICOM的常用Tag分類和說明
http://www.cnblogs.com/stephen2014/p/4579443.html

11.dicom的大牛zssure的博客,幾十篇文章
http://blog.csdn.net/zssureqh/article/category/1389985

12.dicom協議中文文檔下載
http://download.csdn.net/detail/wenzhi20102321/9897014

13.Sante DICOM Editor 4,查看dicom文件的工具,直接打開用
http://download.csdn.net/detail/wenzhi20102321/9895616

參考5 lj.jar

lib · master · mirrors / liwenzhi / ImageJDemo · CODE CHINA (csdn.net)

#ImageJ解析dicom文件成jpg圖片 Dicom全稱是醫學數字圖像與通訊,這里講java解析diocm格式文件變成jpg示例。 這里的代碼只能解析普通的dicom文件成jpg圖片,對于壓縮的dicom文件是沒有辦法解析的! 先看效果: 解析到本地目錄:

解析到本地電腦:

ImageJ解析代碼很簡單,但是要導入ImageJ的jar包。 從第一個圖片可以看到lib中導入了ij.jar,這就是ImageJ的jar包,下面那個zip是source文件,這樣就可以看到ImageJ里面的源碼。

下面是調用ImageJ的代碼:

import ij.plugin.DICOM;import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File;/*** dicom文件java解析,生成圖片* 不過這里不能解析壓縮的dicom文件*/ public class ImageDemo {public static void main(String args[]) { // create("test1.dcm"); //在本地目錄生成test1.dcm.jpg圖片文件create2("D:\\dicom\\test3.dcm"); //在電腦dicom文件夾下生成test1.dcm.jpg圖片文件}/*** 根據dicom文件生成jpg圖片* <p/>* 這里輸入的是image文件夾的dicom文件名字,* 運行即可得到一個jpg圖片,顯示的是dicom里面的圖形*/private static void create(String fileName) {try {String projectPath = System.getProperty("user.dir");//Check class DICOMDICOM dicom = new DICOM();String imagePath = projectPath + "\\image\\" + fileName;dicom.run(imagePath);BufferedImage bi = (BufferedImage) dicom.getImage();int width = bi.getWidth();int height = dicom.getHeight();System.out.println("width: " + width + "\n" + "height: " + height);imagePath = projectPath + "\\image\\" + fileName + ".jpg";ImageIO.write(bi, "jpg", new File(imagePath));System.out.println("Hehe,Game over!!!");} catch (Exception e) {System.out.println("錯誤" + e.getMessage());}}/*** 輸入一個dicom文件的絕對路徑和名字* 獲取一個jpg文件*/private static void create2(String filePath) {try {DICOM dicom = new DICOM();dicom.run(filePath);BufferedImage bi = (BufferedImage) dicom.getImage();int width = bi.getWidth();int height = dicom.getHeight();System.out.println("width: " + width + "\n" + "height: " + height);String imagePath = filePath + ".jpg";ImageIO.write(bi, "jpg", new File(imagePath));System.out.println("Hehe,Game over!!!");} catch (Exception e) {System.out.println("錯誤" + e.getMessage());}}}

總結

以上是生活随笔為你收集整理的DICM文件转图片的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。