C#中查詢資料庫的圖片system.byte[]怎麼轉為img

穀子Guzii發表於2013-06-13
如直接在資料庫查詢時: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);


相關文章