将Dicom图像导出为tif格式

时间:2013-05-03 05:35:25

标签: c# asp.net dicom

using (Bitmap bmp = (Bitmap)Bitmap.FromFile(C:\Users\112\AppData\Local\Temp\113837.dcm))
{
    // obtain the XResolution and YResolution TIFFTAG values
    PropertyItem piXRes = bmp.GetPropertyItem(282);
    PropertyItem piYRes = bmp.GetPropertyItem(283);

    // values are stored as a rational number - numerator/denominator pair
    numerator = BitConverter.ToInt32(piXRes.Value, 0);
    denominator = BitConverter.ToInt32(piXRes.Value, 4);
    float xRes = numerator / denominator;

    numerator = BitConverter.ToInt32(piYRes.Value, 0);
    denominator = BitConverter.ToInt32(piYRes.Value, 4);
    float yRes = numerator / denominator;

    // now set the values
    byte[] numeratorBytes = new byte[4];
    byte[] denominatorBytes = new byte[4];

    numeratorBytes = BitConverter.GetBytes(600); // specify resolution in numerator
    denominatorBytes = BitConverter.GetBytes(1);

    Array.Copy(numeratorBytes, 0, piXRes.Value, 0, 4); // set the XResolution value
    Array.Copy(denominatorBytes, 0, piXRes.Value, 4, 4);

    Array.Copy(numeratorBytes, 0, piYRes.Value, 0, 4); // set the YResolution value
    Array.Copy(denominatorBytes, 0, piYRes.Value, 4, 4);

    bmp.SetPropertyItem(piXRes); // finally set the image property resolution
    bmp.SetPropertyItem(piYRes);

    bmp.SetResolution(600, 600); // now set the bitmap resolution

    bmp.Save(@"C:\output.tif"); // save the image
}

我在行using (Bitmap bmp = ...上收到“内存不足”错误。我该如何解决?

2 个答案:

答案 0 :(得分:2)

“内存不足”具有误导性。这实际上意味着图像格式无法由.Net确定。

抱歉,.Net不支持DICOM图片。有关支持的图像格式的信息,请参阅http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspx

答案 1 :(得分:2)

用这条线......

(Bitmap)Bitmap.FromFile(C:\Users\112\AppData\Local\Temp\113837.dcm)

...您正在阅读dicom文件中包含的所有原始数据。这包括Dicom数据元素(包含信息的字段)。

提取图像数据的数量为much more complicated。您应该开始寻找有关the Dicom format的一些信息。

其他有用的信息来源可以在DabsoftMedical Connections上找到,当然也可以在David Clunie的website上找到。