• 获取网络图片并显示在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

  • 相关阅读:
    JDBC
    初识JAVA
    初入门 HTML
    jsp数据交互(一).3
    jsp数据交互(一).2
    jsp数据交互(一).1
    jsp的简介(1)
    Android实现数据存储技术
    Android数据存储五种方式总结
    SD卡操作
  • 原文地址:https://www.cnblogs.com/niyl/p/10136042.html
Copyright © 2020-2023  润新知