将System.Windows.Media.ImageSource转换为ByteArray

有没有办法将ImageSource对象转换为字节数组? 我有一个绑定到WPF窗口的ImageSource对象,我可以从数据库转换一个字节数组并将其转换为ImageSource,但我不能以相反的方式。

Thx提前。

编辑:我试图将ImageSource转换为BitmapImage但得到一个null对象。

即使你的ImageSource不是BitmapImage,你仍然可以成功地将它转换为BitmapSource ,它是所有WPF位图类的基类,如BitmapImage,BitmapFrame,WriteableBitmap,RenderTargetBitmap等(见这里 )。

因此,如果您的ImageSource实际上是BitmapSource(而不是DrawingImage或D3DImage),则以下方法使用指定的BitmapEncoder(例如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; }