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;