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