WPF Image to byte[] WPF Image to byte[] arrays arrays

WPF Image to byte[]


Real Solution... if want to save jpg images from an System.Windows.Control.Image when your database mapped field on your ORM is Byte[] / byte[] / Bynary

public byte[] getJPGFromImageControl(BitmapImage imageC){       MemoryStream memStream = new MemoryStream();                      JpegBitmapEncoder encoder = new JpegBitmapEncoder();        encoder.Frames.Add(BitmapFrame.Create(imageC));        encoder.Save(memStream);        return memStream.ToArray();}

call as :

getJPGFromImageControl(firmaUno.Source as BitmapImage)

Hopes helps :)


I don't know how your Image is declared, but suppose we have this XAML declaration:

<Image x:Name="img">    <Image.Source>        <BitmapImage UriSource="test.png" />    </Image.Source></Image>

Then you can convert the contents of test.png to a byte-array like this:

var bmp = img.Source as BitmapImage;int height = bmp.PixelHeight;int width  = bmp.PixelWidth;int stride = width * ((bmp.Format.BitsPerPixel + 7) / 8);byte[] bits = new byte[height * stride];bmp.CopyPixels(bits, stride, 0);


public byte[] BufferFromImage(BitmapImage imageSource){            Stream stream = imageSource.StreamSource;    byte[] buffer = null;    if (stream != null && stream.Length > 0)    {        using (BinaryReader br = new BinaryReader(stream))        {            buffer = br.ReadBytes((Int32)stream.Length);        }    }    return buffer;}

would be another way, but difference is this have less bytes[x] than first solution