110,532
社区成员
发帖
与我相关
我的任务
分享
//转换二进制,通过网络地址获取图片,转换成二进制保存到数据库
public static byte[] BitmapToBytes(string photourl)
{
byte[] bytes=null;
Random seed = new Random();
Stream stream = null;
try
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(photourl);
WebResponse response = request.GetResponse();
stream = response.GetResponseStream();
bytes = new byte[4096 + (int)response.ContentLength];
stream.Read(bytes, 0, Convert.ToInt32(4096 + (int)response.ContentLength));
}
catch (Exception ex)
{}
}
SqlParameter parameter = command.CreateParameter();
parameter.SqlDbType = SqlDbType.Image;
parameter.ParameterName = "@photo";
parameter.Value = images;
command.Parameters.Add(parameter);
private void btnSavePicture_Click(object sender, EventArgs e)
{
Image Picture = this.pictureBox2.Image;//获取图片
MemoryStream ms = new MemoryStream();
Picture.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//转换成数据流
byte[] bPicture = ms.GetBuffer();//注意这一条与下两条语句的区别
//下面这两条语句似乎要实现存储二进制的目的,但存储图片的方式会有问题,读出来的数据无法还原成图片
//byte[] bPicture = new byte[ms.Length];
//ms.Write(bPicture, 0, (int)ms.Length);
SqlConnection conn = new SqlConnection("Data Source=.;Integrated Security=True");
string strSQL = "use Northwind Insert into Pictures(Picture) values(@image)";
SqlCommand cmd = new SqlCommand(strSQL, conn);
cmd.Parameters.Add("@image", SqlDbType.Image);
cmd.Parameters["@image"].Value = bPicture;
try
{
conn.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("存储成功!");
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
finally
{
conn.Close();
}
}
String url = "http://img04.taobaocdn.com/sns_album/i4/T1yAdWXgdGXXb1upjX.jpg";
String fileName = url.Substring(url.LastIndexOf("/") + 1);
String refer = url.Substring(0, url.LastIndexOf("/") + 1);
System.Net.HttpWebRequest req = System.Net.HttpWebRequest.Create(url) as System.Net.HttpWebRequest;
req.AllowAutoRedirect = true;
req.Referer = refer;
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
System.Net.HttpWebResponse res = req.GetResponse() as System.Net.HttpWebResponse;
System.IO.Stream stream = res.GetResponseStream();
System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
byte[] buffer = new byte[32 * 1024];
int bytes;
while ((bytes = stream.Read(buffer, 0, buffer.Length)) > 0)
{
memoryStream.Write(buffer, 0, bytes);
}
byte[] images = memoryStream.GetBuffer();
res.Close();
memoryStream.Dispose();