【发布时间】:2011-07-24 10:34:46
【问题描述】:
我有一个代码可以从 IP 摄像机流式传输快照并将其保存在硬盘上。 然后我有另一个代码来读取它并将其存储在 ms-sql 数据库中。 我知道如果我只是流式传输图像并将其保存在数据库中而不将其保存在硬盘上并再次读取它会更快。但我不知道如何合并它。
获取图片的代码
string sourceURL = "http://" + ip + "/cgi-bin/cmd/encoder?SNAPSHOT";
WebRequest req = (WebRequest)WebRequest.Create(sourceURL);
req.Credentials = new NetworkCredential("admin", "123456");
WebResponse resp = req.GetResponse();
Stream stream = resp.GetResponseStream();
Bitmap bmp = (Bitmap)Bitmap.FromStream(stream);
bmp.Save(ImagePath);
然后将图片插入数据库:
byte[] imageData = ReadFile(ImageName);
using (SqlConnection cn = new SqlConnection(constr))
{
string qry = "update vaiolations set val_image=@ImageData ,valid=1 where id=@OriginalPath ";
SqlCommand SqlCom = new SqlCommand(qry, cn);
SqlCom.Parameters.Add(new SqlParameter("@OriginalPath", (object)id));
SqlCom.Parameters.Add(new SqlParameter("@ImageData", (object)imageData));
cn.Open();
SqlCom.ExecuteNonQuery();
cn.Close();
cn.Dispose();
}
byte[] ReadFile(string sPath)
{
using (FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read))
{
byte[] data = null;
FileInfo fInfo = new FileInfo(sPath);
long numBytes = fInfo.Length;
BinaryReader br = new BinaryReader(fStream);
data = br.ReadBytes((int)numBytes);
return data;
}
}
如何结合这两个代码sn-ps来流式传输图像,然后立即将其插入数据库?
【问题讨论】: