首页 > 编程语言 > 详细

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

时间:2019-09-24 17:25:44      阅读:99      评论:0      收藏:0      [点我收藏+]
技术分享图片
   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;
        }
技术分享图片

 

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

原文:https://www.cnblogs.com/macT/p/11579434.html

(1)
(1)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!