C#中有没有办法进行此转换并返回?
我有一个具有Image控件的WPF应用程序。我正在尝试将该控件中的图像保存到SQL数据库。
在我的实体模型中,我数据库中图片列的数据类型是byte[]
。所以我找到了一个将System.Drawing.Image转换为byte[]
并返回的方法。但我还没有找到一种方法将System.Windows.Controls.Image转换为byte[]
。
这就是为什么我现在需要进行上述转换。
答案 0 :(得分:11)
如果你有一个表示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();
}
}
答案 1 :(得分:3)
嗯,一个是图像,一个是显示图像的控件,所以我不认为两者之间存在转换。但是,您可以将... Controls.Image的源设置为您的... Drawing.Image。
根据更新进行修改
这是否符合您的要求 - http://msdn.microsoft.com/en-us/library/ms233764%28VS.100%29.aspx