Andrew Andrew - 2 months ago 26
C# Question

Difficulty Saving Image To MemoryStream

I'm having some difficulty saving a stream of bytes from an image (in this case, a jpg) to a

System.IO.MemoryStream
object. The goal is to save the
System.Drawing.Image
to a
MemoryStream
, and then use the
MemoryStream
to write the image to an array of bytes (I ultimately need to insert it into a database). However, inspecting the variable
data
after the
MemoryStream
is closed shows that all of the bytes are zero... I'm pretty stumped and not sure where I'm doing wrong...

using (Image image = Image.FromFile(filename))
{
byte[] data;

using (MemoryStream m = new MemoryStream())
{
image.Save(m, image.RawFormat);
data = new byte[m.Length];
m.Write(data, 0, data.Length);
}

// Inspecting data here shows the array to be filled with zeros...
}


Any insights will be much appreciated!

Answer

To load data from a stream into an array, you read, not write (and you would need to rewind). But, more simply in this case, ToArray():

using (MemoryStream m = new MemoryStream())
{
    image.Save(m, image.RawFormat);
    data = m.ToArray();
}