小弟因毕业设计刚接触C#,做一个基于数据库的图像处理程序,但是在编写将图像存入数据库的代码时,可以通过编译,不过在运行的时候会出现“GDI+中出现一般性错误”的提示,因懂的不多,所以实在不知道如何解决,所以想拜托各位高手,能不能麻烦你们帮我写段代码。
    具体要求是:先打开一个图像(只有bmp类型即可),然后在PictureBox中显示该图像,最后将PictureBox中的图像存入数据库中。数据库我是用sql 2005创建的,数据库名称为image,表名称为pic,表中的列分别为:id(int,主键),picdata(image 用于存储图像数据)。
    附加说明:因为是做毕业设计,所以是将图像数据直接存入数据库。
    恳求大家帮帮忙,小弟在此万分感谢。

解决方案 »

  1.   


    OpenFileDialog file = new OpenFileDialog();
                file.Title = "选择图片";
                file.Filter = "图片格式 (*.jpeg,*.bmp,*.gif,*.jgp)|*.jpeg;*.bmp;*.gif;*.jpg|所有文件 (*.*)|*.*";
                if (file.ShowDialog() == DialogResult.OK)
                {                int ind = file.FileName.LastIndexOf('.');
                    string extName = file.FileName.Substring(ind + 1);
                    if (!(extName.ToUpper() == "BMP" || extName.ToUpper() == "GIF" || extName.ToUpper() == "JPEG" || extName.ToUpper() == "JPG"))
                    {
                        MessageBox.Show("请选择正确的图片格式", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    Image image = Image.FromFile(file.FileName);
                  MemoryStream ms = new MemoryStream();
                        image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                       
                      //把 ms.ToArray()保存就行了
                }
      

  2.   

    到数据转换成二进制
    protected void Tijiao_Click(object sender, System.EventArgs e)
    {
    if(Upload.PostedFile.FileName.ToUpper().EndsWith("JPG") || Upload.PostedFile.FileName.ToUpper().EndsWith("GIF"))
    {
    int len = Upload.PostedFile.ContentLength;
    byte[] pic = new byte[len];
    Upload.PostedFile.InputStream.Read(pic, 0, len); String cnStr = System.Configuration.ConfigurationSettings.AppSettings["cnstr"];
    PicTongxue myPicTongxue = new PicTongxue(cnStr);
    myPicTongxue.Title = this.title.Text.Trim();
    myPicTongxue.UserID = ((User)Session["user"]).UserID;
    myPicTongxue.PubDate = System.DateTime.Now;
    myPicTongxue.Images = pic;
    myPicTongxue.Creat();
    Response.Write("<script language='javascript'>" + "alert('上传图片成功!');</script>");
    Response.Write("<script language='javascript'>" + "location.href='Xiangce.aspx';</script>");
    }
    else
    {
    Response.Write("<script language='javascript'>" + "alert('上传图片文件格式不正确!');</script>");
    }
    }
      

  3.   

     private void InsertImage()
            {
                Stream ms;
                byte[] by;
                OpenFileDialog OpenFileDialog1= new OpenFileDialog();
                if (OpenFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    if ((ms = OpenFileDialog1.OpenFile()) != null)
                    {Image img = Image.FromFile(OpenFileDialog1.FileName); 
                      this.pictureBox1.Image = img; 
                       picbyte = new byte[ms.Length];
                       ms.Position = 0;
                       ms.Read(by, 0, Convert.ToInt32(ms.Length));
                       //MemoryStream ms = new MemoryStream(); 
                       //img.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);                       using( SqlConnection conn = new SqlConnection(""))
                       {
                        sql = "Insert into Tb(Photo) values(@UpdateImage)";
                        SqlCommand cmd = new SqlCommand(sql, conn);                    cmd.Parameters.Add("@UpdateImage", SqlDbType.VarBinary);
                        cmd.Parameters["@UpdateImage"].Value = by;
                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                         ms.Close();
                       }
                    }
                }
            }