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

Ton*_*ion 8 c# wpf image type-conversion

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

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

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

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

Abe*_*cht 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];
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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();
    }
}
Run Code Online (Sandbox Code Playgroud)


Jac*_*b G 3

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

根据更新进行编辑

这是否满足您的需要 - http://msdn.microsoft.com/en-us/library/ms233764%28VS.100%29.aspx