Convert System.Windows.Media.ImageSource to ByteArray

后端 未结 1 1940
一整个雨季
一整个雨季 2020-12-19 05:21

is there a way to convert a ImageSource object to byte array? I have an ImageSource object bound to a WPF window, i can convert a byte array from the data base and convert i

相关标签:
1条回答
  • 2020-12-19 05:49

    Even if your ImageSource is not a BitmapImage you may still successfully cast it to BitmapSource, which is the base class of all WPF bitmap classes like BitmapImage, BitmapFrame, WriteableBitmap, RenderTargetBitmap etc. (see here).

    So in case your ImageSource is actually a BitmapSource (and not a DrawingImage or a D3DImage), the following method converts it to a byte array by using the specified BitmapEncoder (e.g. a PngBitmapEncoder):

    public byte[] ImageSourceToBytes(BitmapEncoder encoder, ImageSource imageSource)
    {
        byte[] bytes = null;
        var bitmapSource = imageSource as BitmapSource;
    
        if (bitmapSource != null)
        {
            encoder.Frames.Add(BitmapFrame.Create(bitmapSource));
    
            using (var stream = new MemoryStream())
            {
                encoder.Save(stream);
                bytes = stream.ToArray();
            }
        }
    
        return bytes;
    }
    
    0 讨论(0)
提交回复
热议问题