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