【问题标题】:Convert System.Windows.Media.ImageSource to ByteArray将 System.Windows.Media.ImageSource 转换为 ByteArray
【发布时间】:2015-03-31 23:42:11
【问题描述】:

有没有办法将 ImageSource 对象转换为字节数组? 我有一个 ImageSource 对象绑定到 WPF 窗口,我可以从数据库转换一个字节数组并将其转换为 ImageSource 但我不能以相反的方式进行。

提前致谢。

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

【问题讨论】:

标签: c# wpf


【解决方案1】:

即使您的 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;
}

【讨论】:

    猜你喜欢
    • 2010-11-15
    • 1970-01-01
    • 2017-06-19
    • 2010-10-28
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    相关资源
    最近更新 更多