C#中查询数据库的图片system.byte[]怎么转为img

来源:互联网 发布:qos发展 知乎 编辑:程序博客网 时间:2024/04/28 04:20
如直接在数据库查询时:0xFFD8FFE000104A46494600010101004800480000FFDB...后面还很长。我只贴一部分

而在C#中,查询得到的是System.Byte[]

而我要做的就是将System.Byte[]转换成img显示在pictureBox1上面

以修改为例:

            int id = Convert.ToInt32(dataGridView1.SelectedCells[0].Value);
            string sql = "select *from goods where id=@id";
            SqlParameter sp = new SqlParameter("@id", id);

           //查询ID对应的表信息,SQLHelper为我封装好了的对数据库操作的类,这里直接拿来用的
            DataTable dt = SQLHelper.GetTable(sql, sp);
           //只需要下面那句关键代码,就直接转换过来了
            byte[] by = (byte[])dt.Rows[0]["pic"];
            MemoryStream ms = new MemoryStream(by);
            Image img= Image.FromStream(ms);
            pictureBox1.Image = img;


另外把img保存在数据库里面粘贴下

    Image img = pictureBox1.Image;
            if (img.Width < 100 || img.Height < 100)
            {
                MessageBox.Show("请选择一个100*100以上的图片");
                return;
            }
            //以原图来生成一个小图
            Bitmap bmp = new Bitmap(100, 100);
            Graphics g = Graphics.FromImage(bmp);
            g.Clear(Color.White);
            Rectangle recDes = new Rectangle(0, 0, 100, 100);
           
            Rectangle sRec = new Rectangle(0, 0, img.Width, img.Height);
            g.DrawImage(img, recDes, sRec, GraphicsUnit.Pixel);

            //把两个图片做数据库的参数
            //数据库的文件类型的参数是byte数组
            //要将上面两图片变为byte数组
            byte[] pic;
            MemoryStream ms = new MemoryStream();
            bmp.Save(ms, ImageFormat.Jpeg);
            pic = ms.GetBuffer();//这个流中的所有字节

    //新增操作

   //.....

           sp[X]=new SqlParameter("@XXXX",pic);