using System;
public class ExtractImageRegion
{
public static int Main(string[] args)
{
string filename = args[0];
uint file_size =
gdcm.PosixEmulation.FileSize(filename);
if (!reader.ReadInformation()) return 1;
uint cur_pos = reader.GetStreamCurrentPosition();
uint remaining = file_size - cur_pos;
Console.WriteLine("Remaining bytes to read (Pixel Data): " + remaining.ToString() );
UIntArrayType dims = ImageHelper.GetDimensionsValue(f);
PixelFormat pf = ImageHelper.GetPixelFormatValue (f);
int pixelsize = pf.GetPixelSize();
PhotometricInterpretation pi = ImageHelper.GetPhotometricInterpretationValue(f);
Console.WriteLine( pi.toString() );
byte[] buffer = new byte[ dims[0] * dims[1] * pixelsize ];
BoxRegion box = new BoxRegion();
for (uint z = 0; z < dims[2]; z++)
{
box.SetDomain(0, dims[0] - 1, 0, dims[1] - 1, z, z);
reader.SetRegion( box );
if (reader.ReadIntoBuffer(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;
}
}