我有一个带有图片框的win表单,我想将图像存储到数据库,所以在将图像转换为字节以存储在数据库中时,我收到错误。如何解决错误?这是我的代码,我还指出了错误(对象引用未设置为对象实例)的行:
public string ImageToBase64(Image image,
System.Drawing.Imaging.ImageFormat format)
{
using (MemoryStream ms = new MemoryStream())
{
// Convert Image to byte[]
image.Save(ms, format);-------Error at this point----
byte[] imageBytes = ms.ToArray();
// Convert byte[] to Base64 String
string base64String = Convert.ToBase64String(imageBytes);
return base64String;
}
}
答案 0 :(得分:1)
而不是
using (MemoryStream ms = new MemoryStream())
{
// Convert Image to byte[]
image.Save(ms, format);-------Error at this point----
byte[] imageBytes = ms.ToArray();
..
}
应该是:
using(var ms = new MemoryStream())
{
image.Save(ms, image.RawFormat);
byte[] imageBytes = ms.ToArray();
}
图像的RawFormat属性返回图像的格式
编辑1
您也可以尝试使用ImageConverter类
ImageConverter converter = new ImageConverter();
byte[] imageBytes= (byte[])converter.ConvertTo(img, typeof(byte[]));
编辑2
如果要在数据库表中保存bytearray,则columntype应为 VARBINARY 另外,如果你要保存base64string,它应该是 VARCHAR(MAX)或 VARCHAR(X)