![](/img/trans.png)
[英]Convert System.Windows.Media.ImageSource to System.Drawing.Bitmap
[英]Convert System.Windows.Media.ImageSource to ByteArray
有没有办法将 ImageSource 对象转换为字节数组? 我有一个绑定到 WPF 窗口的 ImageSource 对象,我可以从数据库转换一个字节数组并将其转换为 ImageSource 但我不能以相反的方式进行。
提前谢谢。
编辑:我试图将 ImageSource 转换为 BitmapImage 但得到了一个空对象。
即使您的 ImageSource 不是 BitmapImage,您仍然可以成功地将其转换为BitmapSource
,它是所有 WPF 位图类(如 BitmapImage、BitmapFrame、WriteableBitmap、RenderTargetBitmap 等)的基类(请参阅此处)。
因此,如果您的 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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.