好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

实现类似QQ自拍头像的功能(demo源码)

实现类似QQ自拍头像的功能(demo源码)

在很多软件系统中,都允许用户设置自己的头像,甚至可以直接使用摄像头照相作为自己的头像,就像QQ的自拍头像功能一样。

      

      这种功能是如何实现的了?最直接的,我们可以使用Windows提供的VFW技术或DirectX技术来捕获摄像头采集到的视频和图片。但是,无论使用这两种技术中的哪一个,要实现一个兼容所有摄像头而又运行稳定的拍照功能,都不是那么容易。幸运的是, OMCS 已经内置集成了这种功能的一个WinForm控件 PhotoPanel, 我们可以直接拿来使用。

      PhotoPanel控件的主要接口如下图所示:

   ///   <summary> 
   ///   初始化摄像头,并启动它。
    ///   </summary> 
   void   Start();

    ///   <summary> 
   ///   停止摄像头。
    ///   </summary> 
   void   Stop();

    ///   <summary> 
   ///   照相。返回当前帧。
    ///   </summary>         
   Bitmap  GetCurrentImage();

      将PhotoPanel控件从工具箱拖到你的UI上,调用其Start方法,将初始化摄像头,并启动它,然后PhotoPanel控件表面将绘制摄像头采集到的视频。

      当要拍照的时候,则调用GetCurrentImage方法得到当前帧,并保存为位图。

      当拍照结束后,则调用Stop方法停止并释放摄像头设备。

      还有两个问题:

(1)如何设置要使用的摄像头的索引了?这个可以通过PhotoPanel控件暴露的CameraIndex属性来指定。

(2)如何设置拍照的尺寸了?拍照的尺寸即是PhotoPanel的尺寸,其默认值为160*120。当然这个尺寸并不是任意的,必须是当前摄像头所支持的分辨率才可以。比如,160*120、320*240、640*480等,一般摄像头都是支持的。

      OK,下面我们就写了一个使用PhotoPanel来实现自拍头像功能的demo,demo的主要代码如下所示:     

     public   partial   class    TakePhotoForm  :  Form 
    {
          public   TakePhotoForm()
        {
            InitializeComponent();
              this .photoPanel1.CameraIndex =  0 ; //  设置摄像头 
               this .photoPanel1.Start(); //  启动摄像头 
         }

          private   Bitmap  photo =  null  ;
          ///   <summary> 
         ///   拍照结果
           ///   </summary> 
         public    Bitmap  Photo
        {
              get  {  return   photo; }
              set  { photo =  value; }
        }       

          //  拍照 
          private   void  button1_Click( object   sender,  EventArgs  e)
        {
              this .photo =  this  .photoPanel1.GetCurrentImage();
              this  .photoPanel1.Stop();
              this .DialogResult =  System.Windows.Forms. DialogResult .OK;
        }

          private   void  TakePhotoForm_FormClosing( object   sender,  FormClosingEventArgs  e)
        {
              this  .photoPanel1.Stop();
        }
    } 

      其运行效果如下图所示:

      

       下载demo源码 。

     

 

分类:  C#专栏

作者: Leo_wl

    

出处: http://HdhCmsTestcnblogs测试数据/Leo_wl/

    

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

版权信息

查看更多关于实现类似QQ自拍头像的功能(demo源码)的详细内容...

  阅读:50次