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

时间:2010-03-09 16:00:24

标签: c# wpf image type-conversion

C#中有没有办法进行此转换并返回?

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

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

这就是为什么我现在需要进行上述转换。

2 个答案:

答案 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