BitmapImage到byte []

So *_*ins 35 .net c# wpf bitmapimage imagesource

我有一个BitmapImage我在WPF应用程序中使用的,后来我想将它作为字节数组保存到数据库中(我猜这是最好的方法),我该如何执行这种转换?

或者,是否有更好的方法将BitmapImage(或其任何基类,BitmapSourceImageSource)保存到数据存储库?

Chr*_*Fin 55

要转换为byte [],您可以使用MemoryStream:

byte[] data;
JpegBitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmapImage));
using(MemoryStream ms = new MemoryStream())
{
    encoder.Save(ms);
    data = ms.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

而不是JpegBitmapEncoder,你可以使用任何你喜欢的BitmapEncoder,如casperOne所说.

如果您使用MS SQL,您也可以使用image-Column,因为MS SQL支持该数据类型,但您仍需要以某种方式转换BitmapImage.


cas*_*One 5

您将必须使用派生自BitmapEncoder(例如BmpBitmapEncoder)的类的实例并调用Save方法将其保存BitmapSource到a Stream.

您可以根据要保存图像的格式选择特定的编码器.