将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