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 = ...
上收到“内存不足”错误。我该如何解决?
答案 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的一些信息。
其他有用的信息来源可以在Dabsoft和Medical Connections上找到,当然也可以在David Clunie的website上找到。