using System;
using gdcm;
public class ExtractOneFrame
{
public static int Main(string[] args)
{
string filename = args[0];
reader.SetFileName( filename );
if (!reader.ReadImageInformation()) return 1;
UIntArrayType extent = ImageHelper.GetDimensionsValue(f);
uint dimx = extent[0];
uint dimy = extent[1];
uint dimz = extent[2];
PixelFormat pf = ImageHelper.GetPixelFormatValue (f);
int pixelsize = pf.GetPixelSize();
byte[] buffer = new byte[ dimx * dimy * pixelsize ];
for (int i = 0; i < dimz; i++)
{
reader.DefinePixelExtent(0, (ushort)dimx, 0, (ushort)dimy, (ushort)i, (ushort)(i+1));
uint buf_len = reader.DefineProperBufferLength();
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;
}
}