获取网络图片并显示在picturbox上,byte[]数组转换成Image:

   private void getWebPicture_Click(object sender, EventArgs e)
        {
            WebRequest request = WebRequest.Create("http://d.hiphotos.baidu.com/image/h%3D200/sign=6008b360f336afc3110c38658318eb85/a1ec08fa513d26973aa9f6fd51fbb2fb4316d81c.jpg");
            WebResponse response = request.GetResponse();
            Stream s=response.GetResponseStream();
            byte[] data = new byte[1024];
            int length = 0;
            MemoryStream ms = new MemoryStream();
            while ((length=s.Read(data,0,data.Length))>0)
            {
                ms.Write(data, 0, length);
            }
            ms.Seek(0, SeekOrigin.Begin);
            pictureBox1.Image = Image.FromStream(ms);
         }

byte[]数组转换成Image:

   private byte[] ImageTobyteshuzu(Image image)
        {
            MemoryStream ms = new MemoryStream();
            Bitmap bi = new Bitmap(image);
            bi.Save(ms, image.RawFormat);
            byte[] data = new byte[ms.Length];
            ms.Seek(0, SeekOrigin.Begin);
            ms.Read(data, 0, data.Length);
            return data;
        }

Image转换成byte[]数组:

     private Image byteshuzuToImage(byte[] imageBytes)
        {
            MemoryStream ms = new MemoryStream();
            ms.Write(imageBytes, 0, imageBytes.Length);
            ms.Seek(0, SeekOrigin.Begin);
            Image i = Image.FromStream(ms);
            return i;
        }

最后说一下,使用了memeoryStream的write和read方法以后,最好一定要把流指针回到最开始的地方!!! 我因为这个问题老是转换失败,困扰了很久!!!  写这篇博客,以便巩固。

wpf:将iv1上获取到的网络图片存到数据库,并从数据库中读取并显示到Image上:

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            if (iv1.Source!=null)
            {
                BitmapImage bi = (BitmapImage)iv1.Source;
                Stream s=bi.StreamSource;
                s.Seek(0, SeekOrigin.Begin);
                byte[] data = new byte[s.Length];
                s.Read(data, 0, data.Length);
                saveImageToSqlServer(data);
                getImageFromSqlServer();
            }
            else
            {
                MessageBox.Show("请先获取图片!");
            }
        }

保存到数据库:

        private void saveImageToSqlServer(byte[] data)
        {
            SqlConnection conn = new SqlConnection(connectString);
            conn.Open();
            SqlCommand comm = new SqlCommand();
            comm.Connection = conn;
            comm.CommandText = "delete from tb1";
            comm.ExecuteNonQuery();
            comm.Connection = conn;
            comm.CommandText = "insert into tb1(Image) values(@Image)";//注意这里要加@Image
            comm.Parameters.Add("@Image", System.Data.SqlDbType.Image,data.Length);
            comm.Parameters[0].Value = data;
            comm.ExecuteNonQuery();
            conn.Close();
        }

从数据库中读取:

        private void getImageFromSqlServer()
        {
            SqlDataAdapter sda = new SqlDataAdapter("select * from tb1", connectString);
            DataTable dt = new DataTable();
            sda.Fill(dt);
            byte[] data = (byte[])dt.Rows[0][1];
            MemoryStream ms = new MemoryStream();
            ms.Write(data, 0, data.Length);
            ms.Seek(0, SeekOrigin.Begin);
            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.StreamSource = ms;
            bi.EndInit();
            iv2.Source = bi;
        }

原作者:https://blog.csdn.net/qq_30975833/article/details/52294603

原文地址:https://www.cnblogs.com/niyl/p/10136042.html