プライベートボイドgetWebPicture_Click(オブジェクト送信者、のEventArgs電子) { WebRequestクラスリクエスト= WebRequest.Create( "http://d.hiphotos.baidu.com/image/h%3D200/sign=6008b360f336afc3110c38658318eb85/a1ec08fa513d26973aa9f6fd51fbb2fb4316d81c.jpg")。 WebResponse応答= request.GetResponse()。 ストリームS = response.GetResponseStream()。 バイト[]データ=新しいバイト[1024]; INT長= 0。 MemoryStreamをミリ秒=新規のMemoryStream()。 一方、((長さ= s.Read(データ、0、data.Length))> 0) { ms.Write(データ、0、長さ)。 } ms.Seek(0、SeekOrigin.Begin)。 pictureBox1.Image = Image.FromStream(MS)。 }
バイト[]配列は、画像に変換されます。
プライベートバイト[] ImageTobyteshuzu(イメージ画像) { MemoryStreamをミリ秒=新規のMemoryStream()。 ビットマップBI =新しいビットマップ(画像)。 bi.Save(MS、image.RawFormat)。 バイト[]データ=新しいバイト[ms.Length]。 ms.Seek(0、SeekOrigin.Begin)。 ms.Read(データ、0、data.Length)。 データを返します。 }
画像は、バイト[]配列に変換します:
プライベートイメージbyteshuzuToImage(バイト[] imageBytes) { MemoryStreamをミリ秒=新規のMemoryStream()。 ms.Write(imageBytes、0、imageBytes.Length)。 ms.Seek(0、SeekOrigin.Begin)。 画像I = Image.FromStream(ミリ秒)。 私は返します。 }
最後に、memeoryStream書き込みの使用についての話や将来の方法は、最初の場所に戻って最高のストリームポインタを取る必要があります読ん!!!私はいつもの変換は、長い時間のために、この問題のため、問題を抱え失敗!!!このブログを書いて、統合するためです。
WPF:データベースにIV1ネットワーク上の画像を取得し、データベースから読み込まれ、画像上に表示されます:
プライベート無効Button_Click_2(オブジェクト送信者、RoutedEventArgs e)の { 場合(iv1.Source = nullを!) { BitmapImageのBI =(BitmapImageの)iv1.Source。 ストリームS = bi.StreamSource。 s.Seek(0、SeekOrigin.Begin)。 バイト[]データ=新しいバイト[s.Length]。 s.Read(データ、0、data.Length)。 saveImageToSqlServer(データ)。 getImageFromSqlServer(); } 他 { MessageBox.Show( "请先获取图片!"); } }
データベースに保存されました:
プライベートボイドsaveImageToSqlServer(バイト[]データ) { SqlConnectionのCONN =新しいSqlConnectionオブジェクト(のconnectString)。 conn.Open(); SqlCommandオブジェクトCOMM =新しいSqlCommandオブジェクト(); comm.Connection = CONN。 comm.CommandText =「TB1から削除」。 comm.ExecuteNonQuery(); comm.Connection = CONN。 comm.CommandText = "TB1に挿入(画像)の値(@Image)"; //注意这里要加@Image comm.Parameters.Add( "@イメージ"、System.Data.SqlDbType.Image、data.Length)。 comm.Parameters [0] .Valueの=データ。 comm.ExecuteNonQuery(); conn.close(); }
データベースからの読み込み:
プライベート無効getImageFromSqlServer() { SqlDataAdapterオブジェクトのsdaには、=新しいSqlDataAdapterオブジェクト( "TB1から選択*"、のconnectString)。 DataTable dtを=新しいのDataTable(); sda.Fill(DT)。 バイト[]データ=(バイト[])dt.Rows [0] [1]。 MemoryStreamをミリ秒=新規のMemoryStream()。 ms.Write(データ、0、data.Length)。 ms.Seek(0、SeekOrigin.Begin)。 BitmapImageの双方向=新しいBitmapImageの(); bi.BeginInit(); bi.StreamSource = MS】 bi.EndInit(); iv2.Source =双方向; }