我正在尝试将位图图像保存到数据库
Bitmap map = new Bitmap(pictureBoxMetroMap.Size.Width, pictureBoxMetroMap.Size.Height);
我imgcontent在数据库中创建了具有数据类型的列,binary但我的问题是如何将其bitmap(映射)转换为二进制数据?
imgcontent
binary
bitmap
以及如何从数据库检索数据?
我用谷歌搜索,发现了类似的东西,但是没有用:
byte[] arr; ImageConverter converter = new ImageConverter(); arr = (byte[])converter.ConvertTo(map, typeof(byte[]));
将图像转换为byte[]并将其存储在数据库中。
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
ByteArrayToImage
Image
当byte[]变大时,这将停止工作。适用于100Mb以下的文件