将图像转换为字节以保存在数据库中时出错

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)