将System.Drawing.Image转换为System.Windows.Controls.Image?

在C#中有没有办法进行这种转换并返回?

我有一个WPF应用程序,它有一个Image控件。 我正在尝试将该控件中的图像保存到SQL数据库。

在我的实体模型中,我数据库中图片列的数据类型是byte[] 。 所以我找到了一个将System.Drawing.Image转换为byte[]并返回的方法。 但我还没有找到一个从System.Windows.Controls.Image转换为byte[]

所以这就是我现在需要进行上述转换的原因。

如果你有一个表示WPF可以解码的文件的字节数组(bmp,jpg,gif,png,tif,ico),你可以执行以下操作:

 BitmapSource LoadImage(Byte[] imageData) { using (MemoryStream ms = new MemoryStream(imageData)) { var decoder = BitmapDecoder.Create(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnLoad); return decoder.Frames[0]; } } 

同样,要将其转换回来,您可以执行以下操作:

 byte[] SaveImage(BitmapSource bitmap) { using (MemoryStream ms = new MemoryStream()) { var encoder = new BmpBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmap)); encoder.Save(ms); return ms.GetBuffer(); } } 

嗯,一个是图像,一个是显示图像的控件,所以我不认为两者之间存在转换。 但是,您可以将… Controls.Image的Source设置为您的… Drawing.Image。

根据更新进行编辑

这样做你需要的 – http://msdn.microsoft.com/en-us/library/ms233764%28VS.100%29.aspx