问题描述
将图像转换为byte[]
并将其存储在数据库中。
将此列添加到模型中:
public byte[] Content { get; set; }
然后将图像转换为字节数组,并像存储其他任何数据一样存储它:
public byte[] ImagetoByteArray(System.Drawing.Image imageIn)
{
using(var ms = new MemoryStream())
{
imageIn.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
return ms.ToArray();
}
}
public Image ByteArrayToImage(byte[] byteArrayIn)
{
using(var ms = new MemoryStream(byteArrayIn))
{
var returnImage = Image.FromStream(ms);
return returnImage;
}
}
var image = new ImageEntity()
{
Content = ImagetoByteArray(image)
};
_context.Images.Add(image);
_context.SaveChanges();
如果你想获得的图像回来,从数据库中获取的字节数组,并使用ByteArrayToImage
与你希望与什么样的Image
当byte[]
变大时,这将停止工作。适用于100Mb以下的文件
解决方法
我正在尝试将位图图像保存到数据库
Bitmap map = new Bitmap(pictureBoxMetroMap.Size.Width,pictureBoxMetroMap.Size.Height);
我imgcontent
在数据库中创建了具有数据类型的列,binary
但我的问题是如何将其bitmap
(映射)转换为二进制数据?
以及如何从数据库检索数据?
我用谷歌搜索,发现了类似的东西,但是没有用:
byte[] arr;
ImageConverter converter = new ImageConverter();
arr = (byte[])converter.ConvertTo(map,typeof(byte[]));