How to Convert System.Drawing.Image to Byte Array?

The VB.NET TypeOf operator doesn't do what you think it does. Somewhat confusing perhaps due to the C# typeof operator. The VB.NET equivalent is the GetType() function. This works fine:

Dim converter As New ImageConverter
nRow.Signature = converter.ConvertTo(imgSignature, GetType(Byte()))

The type converter uses a MemoryStream to make the conversion, using the PNG image format.


You can use a MemoryStream. By saving the image into a MemoryStream, you can get the byte array of data from the image:

Dim ms = new MemoryStream()
imgSegnature.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg) ' Use appropriate format here
Dim bytes = ms.ToArray()