Welcome

首页 / 软件开发 / C# / C#视频监控系列(9):服务器端——数据捕获(抓图 + 录像)

C#视频监控系列(9):服务器端——数据捕获(抓图 + 录像)2011-07-14 博客园 农民伯伯前言

录像功能是监控系统中最重要的功能之一,除了本文的功能实现外,还需要你自己考虑合适的存储策略:存储大小、时间段、 存储盘符等。

正文

一、抓图

这个功能没有在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的方法请自行尝试,应该是差不多的: )