Pixel Data to Byte Array

We are often asked how to retrieve the pixel data of a DicomImage into a Byte array. The following code will load an image and copy the pixel data into a byte array.

DicomImage img = new DicomImage(@"C:\...");
Array[] sysArray = (Array[])img.RawPixels;
Array FrameSysArray = sysArray[0];
byte[] bytesArray = new byte[FrameSysArray.Length * img.RawPixels.Length];
for (int frameCount = 0; frameCount < sysArray.Length; frameCount++)
 int offset = frameCount * FrameSysArray.Length;
 Buffer.BlockCopy(sysArray[frameCount], 0, bytesArray, offset, FrameSysArray.Length);        	 

If however you already know the type of data contained within the object Pixels and that is the type you require,then the code becomes simply a pass. (short array shown for 16bit images)

short[, ,] data = (ushort[, ,])dicomViewer1.CurrentImage.Pixels;