public static int Main(string[] args) { string filename = args[0]; gdcm.StreamImageReader reader = new gdcm.StreamImageReader(); reader.SetFileName(filename); if (!reader.ReadImageInformation()) { return(1); } // Get file infos gdcm.File f = reader.GetFile(); // get some info about image UIntArrayType extent = ImageHelper.GetDimensionsValue(f); //System.Console.WriteLine( extent[0] ); uint dimx = extent[0]; //System.Console.WriteLine( extent[1] ); uint dimy = extent[1]; //System.Console.WriteLine( extent[2] ); uint dimz = extent[2]; PixelFormat pf = ImageHelper.GetPixelFormatValue(f); int pixelsize = pf.GetPixelSize(); //System.Console.WriteLine( pixelsize ); // buffer to get the pixels byte[] buffer = new byte[dimx * dimy * pixelsize]; for (int i = 0; i < dimz; i++) { // Define that I want the image 0, full size (dimx x dimy pixels) reader.DefinePixelExtent(0, (ushort)dimx, 0, (ushort)dimy, (ushort)i, (ushort)(i + 1)); uint buf_len = reader.DefineProperBufferLength(); // take into account pixel size //System.Console.WriteLine( buf_len ); if (buf_len > buffer.Length) { throw new Exception("buffer is too small for target"); } if (reader.Read(buffer, (uint)buffer.Length)) { using (System.IO.Stream stream = System.IO.File.Open(@"/tmp/frame.raw", System.IO.FileMode.Create)) { System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(buffer); } } else { throw new Exception("can't read pixels error"); } } return(0); }
public static int Main(string[] args) { string filename = args[0]; gdcm.StreamImageReader reader = new gdcm.StreamImageReader(); reader.SetFileName( filename ); if (!reader.ReadImageInformation()) return 1; // Get file infos gdcm.File f = reader.GetFile(); // get some info about image UIntArrayType extent = ImageHelper.GetDimensionsValue(f); //System.Console.WriteLine( extent[0] ); uint dimx = extent[0]; //System.Console.WriteLine( extent[1] ); uint dimy = extent[1]; //System.Console.WriteLine( extent[2] ); uint dimz = extent[2]; PixelFormat pf = ImageHelper.GetPixelFormatValue (f); int pixelsize = pf.GetPixelSize(); //System.Console.WriteLine( pixelsize ); // buffer to get the pixels byte[] buffer = new byte[ dimx * dimy * pixelsize ]; for (int i = 0; i < dimz; i++) { // Define that I want the image 0, full size (dimx x dimy pixels) reader.DefinePixelExtent(0, (ushort)dimx, 0, (ushort)dimy, (ushort)i, (ushort)(i+1)); uint buf_len = reader.DefineProperBufferLength(); // take into account pixel size //System.Console.WriteLine( buf_len ); if( buf_len > buffer.Length ) { throw new Exception("buffer is too small for target"); } if (reader.Read(buffer, (uint)buffer.Length)) { using (System.IO.Stream stream = System.IO.File.Open(@"/tmp/frame.raw", System.IO.FileMode.Create)) { System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(buffer); } } else { throw new Exception("can't read pixels error"); } } return 0; }
public static int Main(string[] args) { // string file1 = args[0]; gdcm.StreamImageReader reader = new gdcm.StreamImageReader(); reader.SetFileName(@"/tmp/raw.dcm"); if (!reader.ReadImageInformation()) return 1; // Get file infos gdcm.File f = reader.GetFile(); // get some info about image UIntArrayType extent = ImageHelper.GetDimensionsValue(f); System.Console.WriteLine( extent[0] ); System.Console.WriteLine( extent[1] ); System.Console.WriteLine( extent[2] ); // buffer to get the pixels byte[] buffer = new byte[512 * 512 * 1]; for (int i = 0; i < 1; i++) { // Define that I want the image 0, full size (512x512 pixels) reader.DefinePixelExtent(0, 512, 0, 512, (ushort)i, (ushort)(i+1)); if (reader.Read(buffer, (uint)buffer.Length)) { using (System.IO.Stream stream = System.IO.File.Open(@"/tmp/frame.raw", System.IO.FileMode.Create)) { System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream); writer.Write(buffer); } } else { throw new Exception("can't read pixels error"); } } return 0; }