现在位置首页 / 项目实战 /正文

wpf教程--使用WPFMediaKit调用平板(surface2)摄像头拍照

作者: IT小兵 | 2014年7月9日| 热度:℃ | 评论: |参与:

wpf中怎么调用surface(或者其他平板)的摄像头进行拍照那?今天分享一下使用WPFMediaKit调用平板(surface2)摄像头拍照。

1、WPFMediaKit官方地址:http://wpfmediakit.codeplex.com/ 

下载最新的代码,加入到项目中。

2、test项目引用WPFMediaKit

xaml代码:

<Window x:Class="test.WPFMediaKitWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           xmlns:wpfmedia="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
        Title="WPFMediaKitWindow" Loaded="Window_Loaded"  WindowState="Maximized">
    <Grid>
        <StackPanel Orientation="Vertical">
            <StackPanel Orientation="Horizontal">
                <ComboBox Name="cb" SelectionChanged="cb_SelectionChanged" Width="100" />
                <Button Content="打开摄像头" x:Name="btnOpen" Click="btnOpen_Click"  Width="100"/>
                <Button Content="拍照" x:Name="btnCapture" Click="btnCapture_Click"    Width="100" />
                <Button Content="保存" x:Name="btnSave" Click="btnSave_Click"   Width="100" />
            </StackPanel>
            <wpfmedia:VideoCaptureElement Name="vce"   />
          
        </StackPanel>
    </Grid>
</Window>

后台代码:

获取摄像头:

     private void cameraOpen()
        {
            cb.ItemsSource = MultimediaUtil.VideoInputNames;
            if (MultimediaUtil.VideoInputNames.Length > 1)
            {
                cb.SelectedIndex = 1;
            }
            else
            {
                cb.SelectedIndex = 0;
            }
        }

拍照保存到硬盘:win8注意有文件夹的权限问题

  private void TakePhoto()
        {
            RenderTargetBitmap bmp = new RenderTargetBitmap(
            (int)vce.ActualWidth, (int)vce.ActualHeight,
            96, 96, PixelFormats.Default);
            //vce.Stretch = Stretch.Fill;
            vce.Measure(vce.RenderSize);
            vce.Arrange(new Rect(vce.RenderSize));
            bmp.Render(vce);
            BitmapEncoder encoder = new JpegBitmapEncoder();
            encoder.Frames.Add(BitmapFrame.Create(bmp));
            using (MemoryStream ms = new MemoryStream())
            {
                encoder.Save(ms);
                CaptureData = ms.ToArray();
                File.WriteAllBytes(@"C:\aaaa\" + DateTime.Now.ToString("yyyy-mm-dd-hh-mm-sss")+".png", CaptureData);
            }
            vce.Play();
            //capCreateCaptureWindowA() 
            return;
        }


点击阅读本文所属分类的更多文章: 项目实战 。和高手一起交流:346717337
友荐云推荐

未注明转发、原文均为本站原创。分享本文请注明 原文链接

给您更多信息和帮助

在这里您可以找到更多:

技术交流群:346717337 Jquery插件交流

投稿:suchso@vip.qq.com

承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询

echarts教程系列
本月最热文章

微信扫一扫,徜徉悠嘻网,您的休闲乐园

微信公众号:快乐每一天

随机文章
标签

技术交流群:346717337

投稿:suchso@vip.qq.com

专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询