c#获取网络图片 Image和byte[]数组的相互转换

时间:2025-03-28 15:10:07

获取网络图片并显示在picturbox上:

   private void getWebPicture_Click(object sender, EventArgs e)
        {
            WebRequest request = ("/image/h%3D200/sign=6008b360f336afc3110c38658318eb85/");
            WebResponse response = ();
            Stream s=();
            byte[] data = new byte[1024];
            int length = 0;
            MemoryStream ms = new MemoryStream();
            while ((length=(data,0,))>0)
            {
                (data, 0, length);
            }
            (0, );
             = (ms);
         }
byte[]数组转换成Image:

   private byte[] ImageTobyteshuzu(Image image)
        {
            MemoryStream ms = new MemoryStream();
            Bitmap bi = new Bitmap(image);
            (ms, );
            byte[] data = new byte[];
            (0, );
            (data, 0, );
            return data;
        }
Image转换成byte[]数组:
     private Image byteshuzuToImage(byte[] imageBytes)
        {
            MemoryStream ms = new MemoryStream();
            (imageBytes, 0, );
            (0, );
            Image i = (ms);
            return i;
        }

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

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

        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            if (!=null)
            {
                BitmapImage bi = (BitmapImage);
                Stream s=;
                (0, );
                byte[] data = new byte[];
                (data, 0, );
                saveImageToSqlServer(data);
                getImageFromSqlServer();
            }
            else
            {
                ("请先获取图片!");
            }
        }
保存到数据库:

        private void saveImageToSqlServer(byte[] data)
        {
            SqlConnection conn = new SqlConnection(connectString);
            ();
            SqlCommand comm = new SqlCommand();
             = conn;
             = "delete from tb1";
            ();
             = conn;
             = "insert into tb1(Image) values(@Image)";//注意这里要加@Image
            ("@Image", ,);
            [0].Value = data;
            ();
            ();
        }
从数据库中读取:
        private void getImageFromSqlServer()
        {
            SqlDataAdapter sda = new SqlDataAdapter("select * from tb1", connectString);
            DataTable dt = new DataTable();
            (dt);
            byte[] data = (byte[])[0][1];
            MemoryStream ms = new MemoryStream();
            (data, 0, );
            (0, );
            BitmapImage bi = new BitmapImage();
            ();
             = ms;
            ();
             = bi;
        }