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

时间:2016-06-01 06:30:32

标签: winforms c#-3.0

我有一个带有图片框的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;
        }
    }

1 个答案:

答案 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)