0
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 = ...。どうすれば解決できますか?

4

2 に答える 2

2

「メモリ不足」は誤解を招くものです。これは、画像形式が .Net によって決定できないことを意味します。

申し訳ありませんが、.Net は DICOM 画像をサポートしていません。サポートされている画像形式については、http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.aspxを参照してください。

于 2013-05-03T05:44:16.567 に答える
2

この線で...

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

...dicom ファイルに含まれる生データ全体を読み取っています。これには、Dicom データ要素 (情報を含むフィールド) が含まれます。

画像データの抽出は、これよりもはるかに複雑です。Dicom 形式に関する情報を探し始める必要があります。

その他の優れた情報源は、DabsoftMedical Connections、そしてもちろん David Clunie のWeb サイトにあります。

于 2013-05-03T08:26:29.557 に答える