前言
錄像功能是監控系統中最重要的功能之一,除了本文的功能實現外,還需要你自己考慮合適的存儲策略:存儲大小、時間段、 存儲盤符等。
正文
一、抓圖
這個功能沒有在VC++服務器端找到對應的代碼,但是GOOGLE到了一段CSDN求助的代碼:
int ret=GetJpegImage(aa,bb,cc,dd);
if(ret==0)
{
CString str;
str.Format("ch%02d_%s.jpg",iLastSelect,CSStartTime);
FILE *pFile=fopen(str.GetBuffer(0),"wb");//Buffer應該是個緩沖區
if(pFile)
{
fwrite(bb,cc,1,pFile); //存儲圖像
fclose(pFile);
另外一段代碼:http://topic.csdn.Net/t/20060721/09/4894821.Html
C#:
byte[] imageBuf = new byte[704*576*2];
int size = 704*576*2;
HikVisionSDK.GetJpegImage(ChannelHandle, imageBuf, out size, 100);
using (MemoryStream ms = new MemoryStream(imageBuf))
{
Image image = Image.FromStream(ms, true);
image.Save("C:\\1.jpg");
}
注意GetJpegImage的參數說明!!並且請注意,由於這個示例,發現前面的(GetJpegImage/GetOriginalImage)API錯誤了,請你及時更新! !
public static extern int GetOriginalImage(IntPtr hChannelHandle, byte[] ImageBuf, out int Size);
public static extern int GetJpegImage(IntPtr hChannelHandle, byte[] ImageBuf, out int Size, uint nQuality);
保 存為bmp的方法請自行嘗試,應該是差不多的: )