程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#視頻監控系列(9):服務器端——數據捕獲(抓圖 + 錄像)(1)

C#視頻監控系列(9):服務器端——數據捕獲(抓圖 + 錄像)(1)

編輯:關於C語言

前言

錄像功能是監控系統中最重要的功能之一,除了本文的功能實現外,還需要你自己考慮合適的存儲策略:存儲大小、時間段、 存儲盤符等。

正文

一、抓圖

這個功能沒有在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的方法請自行嘗試,應該是差不多的: )

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved