将图像转换为字节以保存在数据库中时出错
Error converting image to byte for saving in database
我有一个带有图片框的 win 表单,我想将图像存储到数据库中,所以在将图像转换为字节以存储在数据库中时,我得到 error.How 来解决错误?这是我的代码,我还指出了发生错误(对象引用未设置为对象实例)的行:
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;
}
}
而不是
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();
}
图像的原始格式属性 returns图像的格式
编辑 1
您也可以尝试使用 ImageConverter class
ImageConverter converter = new ImageConverter();
byte[] imageBytes= (byte[])converter.ConvertTo(img, typeof(byte[]));
编辑 2
如果您在数据库中保存 bytearray table 那么列类型应该是 VARBINARY
否则,如果您要保存 base64string,则它应该是 VARCHAR(MAX) 或 VARCHAR(X)
我有一个带有图片框的 win 表单,我想将图像存储到数据库中,所以在将图像转换为字节以存储在数据库中时,我得到 error.How 来解决错误?这是我的代码,我还指出了发生错误(对象引用未设置为对象实例)的行:
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;
}
}
而不是
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();
}
图像的原始格式属性 returns图像的格式
编辑 1
您也可以尝试使用 ImageConverter class
ImageConverter converter = new ImageConverter();
byte[] imageBytes= (byte[])converter.ConvertTo(img, typeof(byte[]));
编辑 2
如果您在数据库中保存 bytearray table 那么列类型应该是 VARBINARY 否则,如果您要保存 base64string,则它应该是 VARCHAR(MAX) 或 VARCHAR(X)