VS2010开发MFC ActiveX,摄像头拍照上传Webservice(2)

继续记录,第二步开发摄像头拍照功能.

使用vfw.h开发摄像头拍照功能,关于vfw网上有很多文章,很多代码可以参考

参考:http://blog.163.com/huangqiao_8/blog/static/33900492008017111847364/

Vedio for Windows 是WIN32 SDK 中多媒体编程SDK 的视频开发工具。在微软的Visual C ++中提供了Vedio
for Windows 的头文件vfw.h 和库文件vfw32.lib。

在ActiveX中显示的Dialog中增加一个picture控件,设置ID为IDC_VIDEO,加入按钮,打开摄像头,拍照等,下面会贴入关键代码:

1.引入vfw.h

#include <vfw.h>
#pragma comment(lib,"vfw32.lib")
//如果没有引入afxcmn.h,在stdafx.h中添加:
//#include <afxcmn.h> 

2.在对话框的头文件中加入如下变量


public:
friend UINT vproc(LPVOID pParam);
friend LRESULT CALLBACK backproc(HWND hwnd,LPVIDEOHDR lpVHDR);
private:
HWND videohwnd;
CEvent e;
CStatic CAPVIDEO;
BITMAPINFO *mapinfo;
PBITMAPINFO tran;
//补充下 在对话框的DoDataExchange方法中添加如下代码:
DDX_Control(pDX, IDC_CAPVIDEO, CAPVIDEO);//绑定控件IDC_CAPVIDEO和变量

3.打开摄像头按钮内的代码


    CRect rc;
CAPVIDEO.GetWindowRect(&rc);
ScreenToClient(rc);

CAPDRIVERCAPS capd;
CAPSTATUS caps;
tran=NULL;
e.ResetEvent();
AfxBeginThread(vproc,(void*)this);
::WaitForSingleObject(e,INFINITE);

if(capDriverConnect(videohwnd,0)==TRUE)
{
capDriverGetCaps(videohwnd,sizeof(CAPDRIVERCAPS),&capd);
capGetStatus(videohwnd,&caps,sizeof(CAPSTATUS));
::SetParent(videohwnd,*this);

::SetWindowLong(videohwnd,GWL_STYLE,WS_CHILD);
::SetWindowPos(videohwnd,NULL,rc.left,rc.top,
rc.Width(),rc.Height(),SWP_NOZORDER);
::ShowWindow(videohwnd,SW_SHOW);
//capPreviewScale(videohwnd, 1);
capPreviewRate(videohwnd,66);
capPreview(videohwnd,true);
}

else
{
AfxMessageBox("创建失败");
}

4.vproc方法

static UINT vproc(LPVOID pParam)
{

CViewDialog
*p=(CViewDialog*)pParam;

HWND
hwnd=capCreateCaptureWindow(NULL,WS_POPUP,0,0,10,10,0,0);
if(hwnd)
{
p->videohwnd=hwnd;
p->e.SetEvent();
}
MSG
Msg;
while(GetMessage(&Msg,NULL,0,0))
{

TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
return
Msg.wParam;

}

5.拍照按钮内的代码

LPWSTR picUrl=_T("d:/123.bmp");
capFileSaveDIB(videohwnd,picUrl);

现在可以存出图了,但是bmp格式不常用,下次记录裁剪bmp和转换bmp为jpg.

有一段弯路,图片控件ID默认是IDC_STATIC,开始没有修改初始化时报错因为ID重复,修改后就好了...

时间: 2024-12-20 01:29:50

VS2010开发MFC ActiveX,摄像头拍照上传Webservice(2)的相关文章

VS2010开发MFC ActiveX,摄像头拍照上传Webservice(1)

最近工作项目,BS中需要用到摄像头拍照,需要存储本地,同时上传到服务器,尝试使用vc++做ActiveX来实现. 完全没有使用过vc,上网搜索各种知识,初步完成.在这里记录下有帮助的资料. 第一步:编写一个ActiveX 第二部:使用vfw.h开发摄像头拍照功能 第三步:裁剪,转换图并上传 转载出处:http://blog.csdn.net/longhuahaha/article/details/8556964 1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,

摄像头拍照上传

今天研究UIImagePickerControlle这个类,用它来打开摄像头和本地照片库.找到一个好的办法也是比较简单的方法来将选择好的图片显示我们想要的UIImageView上,下面通过代码来详细讲解. 这是我的ActionSheet 协议事件 #pragma mark - ActionSheetDelegate - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonInde

网站建设中使用HTML5实现使用手机摄像头拍照上传的功能

HTML5技术支持WebApp在手机上拍照,显示在页面上并上传到服务器.这是手机网站建设中常见的功能,当然你也可以在其它类型应用中适当使用此技术. 1. 视频流 html5 的 The Media Capture(媒体捕捉) API 提供了对摄像头的可编程访问,用户可以直接用 getUserMedia(请注意目前仅Chrome和Opera支持)获得摄像头提供的视频流.我们需要做的是添加一个Html5 的 Video 标签,并将从摄像头获得的视频作为这个标签的输入来源. <video id="

Android应用开发之使用PhoneGap实现拍照上传功能

看这里:Android应用开发之使用PhoneGap实现拍照上传功能 在之前的使用Intellij Idea 搭建PhoneGap Android开发环境以及Android应用开发之使用PhoneGap实现位置上报功能两篇文章中,我们学习了phonegap Android环境的搭建以及phonegap获取位置信息自动上报等,本篇在之前的基础上,我们继续进行PhoneGap Android应用的开发,通过PhoneGap调用摄像头实现拍照自动上传的功能. 整体的学习思路大概是这样:index.ht

html5调用手机摄像头,实现拍照上传功能

今天做手机网站,想实现手机扫描二维码功能.首先实现在浏览器中调用手机摄像头,实现拍照功能并且把拍下的照片显示在页面并上传到服务器上,然后再在服务器端进行分析. 首先实现在浏览器中调用摄像头,当然用现在火的不行的html5,html5中的<video>标签,并将从摄像头获得视频作为这个标签的输入来源.实现拍照功能的html5代码: <article> <style scoped> video { transform: scaleX(-1); } p { text-alig

C++ 使用VS2010创建MFC ActiveX工程项目

1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... ActiveX控件的后缀名是OCX或者DLL.一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动态库共存的文件,然后注册ocx文件. ActiveX控件是基于com标准,使得软件部件在网络环境中进行交互的技术集.它与具体的编程语言无关.

c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目

1.ActiveX的基本概念 ActiveX控件可以看作是一个极小的服务器应用程序,它不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行.这个容器包括WEB网页,应用程序窗体等... ActiveX控件的后缀名是OCX或者DLL.一般是以OCX和动态库共存的形式打包成cab或者exe的文件放在服务器上,客户端下载后运行安装cab或exe解压成OCX和动态库共存的文件,然后注册ocx文件. ActiveX控件是基于com标准,使得软件部件在网络环境中进行交互的技术集.它与具体的编程语言无关.

cordova 拍照上传!

1,安装需要的插件 不管是从相册中选择图片上传,还是拍照上传.我们都需要如下先安装如下三个插件:Camera(相机).file(文件访问操作).fileTransfer(文件传输). 如果没有安装的话,先安装下: 1 2 3 cordova plugin add cordova-plugin-camera cordova plugin add cordova-plugin-file cordova plugin add cordova-plugin-file-transfer 2,选择设备照片并

【神操作】拍照上传就可以打卡!

相信不少人饱受指纹识别.人脸打卡的虐待!堵在最后一公里.迟到一分钟?堵在最后一公里,没法打卡?甚至是等不到或挤不上电梯结果导致打卡迟到?人脸识别半天识别不出,欲哭无泪?指纹打卡关键时刻掉链子,又算迟到? 这些打卡之痛,想必每个上班族总是要经历那么几回.还好现在的手机考勤设计非常人性化,可以设定签到范围,精确到公司附近300米-1000米,只要步入公司附近,就可以顺手签个到.这对于很多需要打卡的上班族确实方便了很多,但这一波刚平,一波又起.手机签到.GPS定位打卡是很方便,但这都要在网络给力的前提