使用Entity Framework 6从SQL Server保存和检索图像(二进制)

Ehs*_*bar 37 c# binary entity-framework bitmap

我试图将位图图像保存到数据库

Bitmap map = new Bitmap(pictureBoxMetroMap.Size.Width, pictureBoxMetroMap.Size.Height);
Run Code Online (Sandbox Code Playgroud)

imgcontent在数据库中使用数据类型创建了一个列binary但我的问题是如何将此bitmap(映射)转换为二进制数据?

我如何从数据库中检索数据?

我用谷歌搜索它,我发现这样的东西,但它不起作用:

byte[] arr;
ImageConverter converter = new ImageConverter();
arr = (byte[])converter.ConvertTo(map, typeof(byte[]));
Run Code Online (Sandbox Code Playgroud)

Jen*_*nsB 78

将图像转换为a byte[]并将其存储在数据库中.


将此列添加到您的模型:

public byte[] Content { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后将您的图像转换为字节数组,并像存储任何其他数据一样存储:

public byte[] imageToByteArray(System.Drawing.Image imageIn)
{
    MemoryStream ms = new MemoryStream();
    imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
    return ms.ToArray();
}

public Image byteArrayToImage(byte[] byteArrayIn)
{
     MemoryStream ms = new MemoryStream(byteArrayIn);
     Image returnImage = Image.FromStream(ms);
     return returnImage;
}
Run Code Online (Sandbox Code Playgroud)

来源:将Image转换为Byte数组的最快方法

var image = new ImageEntity(){
   Content = imageToByteArray(image)
}
_Context.Images.Add(image);
_Context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

当你想要获取图像时,从数据库中获取字节数组并使用byteArrayToImage和做你想做的事情Image

当它byte[]变大时停止工作.它适用于100Mb以下的文件