有没有一种方法可以将ImageSource对象转换为字节数组?
我有一个绑定(bind)到WPF窗口的ImageSource对象,我可以从数据库转换一个字节数组,然后将其转换为ImageSource,但是我不能做相反的事情。

提前谢谢。

编辑:我试图将ImageSource转换为BitmapImage,但是得到了一个空对象。

最佳答案

即使您的ImageSource不是BitmapImage,您仍然可以成功将其强制转换为BitmapSource,它是所有WPF位图类的基类,例如BitmapImage,BitmapFrame,WriteableBitmap,RenderTargetBitmap等(请参见here)。

因此,如果您的ImageSource实际上是BitmapSource(而不是DrawingImage或D3DImage),则以下方法通过使用指定的BitmapEncoder(例如PngBitmapEncoder)将其转换为字节数组:

public byte[] ImageSourceToBytes(BitmapEncoder encoder, ImageSource imageSource)
{
    byte[] bytes = null;
    var bitmapSource = imageSource as BitmapSource;

    if (bitmapSource != null)
    {
        encoder.Frames.Add(BitmapFrame.Create(bitmapSource));

        using (var stream = new MemoryStream())
        {
            encoder.Save(stream);
            bytes = stream.ToArray();
        }
    }

    return bytes;
}

关于c# - 将System.Windows.Media.ImageSource转换为ByteArray,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29380416/

10-10 18:44