前景:医院医技科室采图为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++;
}
}