.NET .dcm转换成jpg,jpeg,网络文件下载到本地

前景:医院医技科室采图为dcm格式,需要同步至病例系统,显示图片为jpg格式

第一步,把医技科室的dcm图片下载到同步数据服务器

第二步,在服务器把本地下载的dcm文件转换为jpg或jpeg格式的图片

代码里所用到的DLL在此处下载,免积分的。https://download.csdn.net/download/wybshyy/87874566

List<ExamrecordImagesModel> list01 = ExamrecordImagesDAL.GetListByPage("", strWhere, "");
if (list01!=null)
{
	int iTemp58 = 1;
	foreach (ExamrecordImagesModel model01 in list01)//循环采图的多张照片
	{
		//先把dcm图片下载到本地
		//http://localhost/Images/DX/20230606/009999/1.2.156.147522.44.410947.9238.5.1.20230606102830.dcm
		//string strTempIMG01 = DownloadPhotoFromUrl("http://192.168.1.2:81/Images"+ model01.ReferencedFile.Replace("\\","/") , model01.AccessionNumber+ model01.PatientID + iTemp58.ToString() + ".dcm");;//病例号+检查号+序号
		//string strPATH = "http://192.168.1.2:81/Images/DX/20230606/009999/1.2.156.147522.44.410947.9238.5.1.20230606102830.dcm";
		if (!System.IO.Directory.Exists(@"D:\ImageData\FangSheDataDCM\"))
		{
			System.IO.Directory.CreateDirectory(@"D:\ImageData\FangSheDataDCM\");
		}
		string strPATH01 = "http://192.168.1.2:81/Images" + model01.ReferencedFile.Replace("\\", "/");//网络文件的源路径
		string strPATH02 = @"D:\ImageData\FangSheDataDCM\" + model01.AccessionNumber + model01.PatientID + iTemp58.ToString() + ".dcm";//要保存到本地的路径
		 WebClient wc = new WebClient();
		 wc.Credentials = new System.Net.NetworkCredential();
		 wc.DownloadFile(strPATH01, strPATH02);//网络文件下载到本地

		//DicomFile dicomFile = DicomFile.Open("path/to/input.dcm");/ D:\ImageData
		DicomFile dicomFile = DicomFile.Open(strPATH02);//打开刚下载的本地文件路径

		var path = Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath);
		Dicom.Imaging.Codec.DesktopTranscoderManager.LoadCodecs(path, "Dicom.Native*.dll");//注:WEB项目的BIN目录下一定要放Dicom.开头的几个DLL文件,放Dicom.Native64.dll文件就可以,不行就把DICOM开头的都放进BIN

		// 提取图像像素数据
		DicomDataset pixelData = dicomFile.Dataset;

		// 将像素数据转换为System.Drawing.Bitmap对象
		DicomImage dicomImage = new DicomImage(pixelData);
		System.Drawing.Bitmap bitmap = dicomImage.RenderImage().As<Bitmap>();

		// 保存为JPG文件
		//保存在本地文件夹
		string strReturnFilePath = "\\FangSheData\\" + System.DateTime.Now.Year.ToString() + "\\" + System.DateTime.Now.ToString("yyyyMMdd").Substring(4, 2) + "\\" + System.DateTime.Now.ToString("yyyyMMdd").Substring(6, 2) + "\\";
		string strPath = @"D:\ImageData" + strReturnFilePath;//在本地硬盘的绝对路径。
		if (!System.IO.Directory.Exists(strPath))
		{
			System.IO.Directory.CreateDirectory(strPath);
		}
		bitmap.Save(strPath + model01.AccessionNumber + model01.PatientID + iTemp58.ToString() + ".jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
		iTemp58++;
	}
}

猜你喜欢

转载自blog.csdn.net/wybshyy/article/details/131084614