设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

1234下一页
返回列表 发新帖
查看: 10501|回复: 35
打印 上一主题 下一主题

[ActiveX] 网络摄像头拍照另存为图片问题(内含免注册调用COM_DLL实例<功能增强版本>)

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2015-3-17 22:55:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

     最近在办公室闲得无聊,想起原来有个客户用网络摄像头拍照的需求还没搞定.原来在网上找了很多实例,但是在Win7中使用时都很不稳定,在程序关闭后重开时,老是黑屏,必需重启电脑或者重选拔插摄像头,才能再次使用.不稳定的东西,自然是拿不出手.
      没有办法,只好硬着头皮自己动手写了一个.为了在VB6和Access中通用.采用了Activex dll的形式.调用也非常简单.实际代码也就2行代码.为了避免dll组件在Win7等系统中注册失败,特做了免注册处理,使得WebCame.dll组件可以不注册而直接调用,方便了用户的使用.

      (其中 DirectCOM.dll 免注册功能组件及技术由 Olaf Schmidt 提供,我在原基础上做了一些优化. 在此向Olaf表示十二万分的谢意,正因为他的无私奉献,才让我们免除了注册dll的烦恼.如果你有兴趣,可以去他的网站逛逛 : http://www.vbrichclient.com/#/en/About/        )
                    Option Explicit
                    Dim Came As Object                                                              ' New WebCamera.clsWebCamera
                    Dim Reg As New clsRegFreeDll
                Private Sub Form_Load()
                             Set Came = Reg.GetRegFreeObject("WebCame", "clsWebCamera")   '以免注册方式取得摄像头控制类
                             Came.OpenCamera Me.Hwnd, 800, 600                                             '打开摄像头,将视频加载到窗体上
                 End Sub

      回到问题点:

     图像现在成功加载到窗体,但是应该怎么将窗体上的图像保存为图片(最好是jpg格式的,希望能尽可能的提高图片的清晰度.已经尝试过网上列举的许多方法但是都没有成功取得满意的图片),由于本人技术有限,搞不定这个问题,请各位老师帮忙指导.
     经过本人测试,附件的实例不会出现黑屏的情况.请其他网友也帮忙测试一下,看是否会出现黑屏,够不够稳定.如果发现有黑屏或者其他问题,请截图在后方回帖,以便调整代码.多谢.












本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 3经验 +22 金钱 +30 收起 理由
站到终点站 + 10 好贴好文
todaynew + 30
tmtony + 12 强贴!,谢谢分享!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2015-3-17 23:00:14 | 只看该作者
谢谢分享,加分了

点击这里给我发消息

3#
 楼主| 发表于 2015-3-17 23:01:16 | 只看该作者
多谢老大加分,再加点技术指导更好.

点击这里给我发消息

4#
发表于 2015-3-17 23:34:22 | 只看该作者
学习主席新作

点击这里给我发消息

5#
发表于 2015-3-17 23:53:57 | 只看该作者
留个脚印,明天慢慢欣赏

点击这里给我发消息

6#
发表于 2015-3-18 06:29:05 来自手机 | 只看该作者
赞一个
回复

使用道具 举报

7#
发表于 2015-3-18 08:01:57 | 只看该作者
留个脚印,明天慢慢欣赏
8#
发表于 2015-3-18 09:12:23 | 只看该作者
谢谢主席分享,不错的示例
9#
发表于 2015-3-18 10:45:14 | 只看该作者
论坛里那几个摄像头拍照的貌似都没测试成功,估计控件跟win7系统(64位)不太兼容。而webcame里似乎没提供相应的API……

点击这里给我发消息

10#
 楼主| 发表于 2015-3-18 11:08:24 | 只看该作者
roych 发表于 2015-3-18 10:45
论坛里那几个摄像头拍照的貌似都没测试成功,估计控件跟win7系统(64位)不太兼容。而webcame里似乎没提供 ...

请问是必须要类似API才能从窗口取得图片么?下面是webcame里用到的API和对象的定义
Private Declare Function DispCallFunc& Lib "oleaut32" (ByVal ppv&, ByVal oVft&, ByVal CC As Long, ByVal rtTYP%, ByVal paCount&, paTypes%, paValues&, fuReturn)
Private Declare Function OleCreatePropertyFrame& Lib "oleaut32" (ByVal hWndOwner&, ByVal X&, ByVal Y&, ByVal lpszCaption&, ByVal cObjects&, ByRef ppUnk&, ByVal cPages&, ByVal pPageClsID&, ByVal lcid&, ByVal dwReserved&, ByVal pvReserved&)
Private GraphBuilder As IGraphBuilder                                            'msvidctl.dll        '互动媒体控制接口
Private m_CurSelFilter As IFilterInfo, m_CurSelPin As IPinInfo                 
Private mFileName As String                                                     
Private m_GraphManager As IMediaControl                                          'quartz.dll
'



Public Sub InitializeNew()
    Set m_GraphManager = New FilgraphManager
    Set GraphBuilder = m_GraphManager                                          
    Set m_CurSelFilter = Nothing
    Set m_CurSelPin = Nothing
End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 19:32 , Processed in 0.106270 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表