今天遇到一个 人事的项目,项目中需要调用摄像头给员工照相。如何解决这个问题呢?

介绍一个开发包给你,MediaKit。论坛里头的人都说好,但是黑兔觉得大家好才是真的好。你不妨试试~

第一步:添加WPFMediaKit.dll 文件到项目中

第二步:把WPFMediaKit.dll文件引用进来。

  步骤 右击引用—>添加引用—>浏览选项卡—>选择WPFMediaKit.dll文件所在的位置.

第三步:在窗口顶端加入如下代码(注意不要该意记)就像using一个类样。

xmlns:WPFMediaKit="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"

<Window x:Class="IXiahe.Photos"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Photos" Height="300" Width="300"
xmlns:WPFMediaKit="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
WindowStartupLocation="CenterScreen" Loaded="loaded">

第四步:添加VideoCaptureElement控件 用来显示一个预览的画面 (需要手写,因为工具箱没有这个控件)

 <StackPanel>
<ComboBox Name="cb" SelectionChanged="cb_SelectionChanged"/> <!--选摄像头-->
<WPFMediaKit:VideoCaptureElement Height="200" Name="vce"/> <!--预览画面-->
<Button Height="50" x:Name="btnCapture" Content="拍照" Click="btnCapture_Click"/> <!--拍照按钮-->
</StackPanel>
    第五步: 接下来就是后台代码
private void Window_Loaded(object sender, RoutedEventArgs e)
{
cb.ItemsSource = MultimediaUtil.VideoInputNames;
if (MultimediaUtil.VideoInputNames.Length > 0)
{
cb.SelectedIndex = 0;//第0个摄像头为默认摄像头
}
else
{
MessageBox.Show("电脑没有安装任何可用摄像头");
}
} private void cbCameras_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
captureElement.VideoCaptureSource = (string)cbCameras.SelectedItem;
} /// <summary>
/// 拍照
/// </summary> private void btnCapture_Click(object sender, RoutedEventArgs e)
{
//captureElement. 怎么抓取高清的原始图像
RenderTargetBitmap bmp = new RenderTargetBitmap(
(int)captureElement.ActualWidth,
(int)captureElement.ActualHeight,
96, 96, PixelFormats.Default); //为避免抓不全的情况,需要在Render之前调用Measure、Arrange
//为避免VideoCaptureElement显示不全,需要把
//VideoCaptureElement的Stretch="Fill"
captureElement.Measure(captureElement.RenderSize);
captureElement.Arrange(new Rect(captureElement.RenderSize));
bmp.Render(captureElement);
//这里需要创建一个流以便存储摄像头拍摄到的图片。
            //当然,可以使文件流,也可以使内存流。
            BitmapEncoder encoder = new JpegBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bmp));
encoder.Save(ms);
captureElement.Pause();
} /// <summary>
/// 重拍
/// </summary> private void btnanew_Click(object sender, RoutedEventArgs e)
{
captureElement.Play();
} /// <summary>
/// 确定
/// </summary> private void btnOK_Click(object sender, RoutedEventArgs e)
{
CaptureData = ms.ToArray();
ms.Dispose();
DialogResult = true;
}

【MediaKit】WPF项目中 调用摄像头拍照的开发包的更多相关文章

  1. html5中调用摄像头拍照

    方法: getCamera: 获取摄像头管理对象 对象: Camera: 摄像头对象 CameraOption: JSON对象.调用摄像头的參数 PopPosition: JSON对象,弹出拍照或摄像 ...

  2. android: 调用摄像头拍照

    很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...

  3. 在WPF程序中使用摄像头兼谈如何使用AForge.NET控件(转)

    前言: AForge.NET 是用C#写的一个关于计算机视觉和人工智能领域的框架,它包括图像处理.神经网络.遗传算法和机器学习等.在C#程序中使用摄像头,我习惯性使用AForge.NET提供的类库.本 ...

  4. C# - VS2019调用AForge库实现调用摄像头拍照功能

    前言 作为一名资深Delphi7程序员,想要实现摄像头扫描一维码/二维码功能,发现所有免费的第三方库都没有简便的实现办法,通用的OpenCV或者ZXing库基本上只支持XE以上的版本,而且一维码的识别 ...

  5. android ——调用摄像头拍照和相册

    先在布局文件中加入两个按钮和一个图片控件 <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...

  6. Java乔晓松-android中调用系统拍照功能并显示拍照的图片

    android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...

  7. AForge调用摄像头拍照时设置分辨率

    简单记录下AForge2.2.5.0版本调用摄像头拍照时设置分辨率的方法. FilterInfo info = _videoDevices[0];//获取第一个摄像头 _cameraDevice = ...

  8. Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决

    问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...

  9. WPF项目中解决ConfigurationManager不能用(转)

    https://blog.csdn.net/MOESECSDN/article/details/78107888 在WPF项目中遇到这样的问题,做一下笔记.希望对自己和读者都有帮助. 在aap.con ...

随机推荐

  1. Spring.NET 与 NHibernate

    回到 Spring.NET & NHibernate of C#.NET 技术论坛 实战C#.NET编程----Spring.NET & NHibernate从入门到精通 您可以从以下 ...

  2. php namespace use 命名空间

    也可以参考PHP官网说明:http://php.net/manual/en/language.namespaces.importing.php namespace(以下简称ns).在定义了一个ns之后 ...

  3. jquery ajax请求了两次问题

    页面有一个请求form: <form method="post" id="signin"> <label for="orderid& ...

  4. 计算圆周率 Pi (π)值, 精确到小数点后 10000 位 只需要 30 多句代码

    大家都知道π=3.1415926……无穷多位, 历史上很多人都在计算这个数, 一直认为是一个非常复杂的问题.现在有了电脑, 这个问题就简单了.电脑可以利用级数计算出很多高精度的值, 有关级数的问题请参 ...

  5. 浅析SQL Server 2005中的主动式通知机制

    一.引言 在开发多人同时访问的Web应用程序(其实不只这类程序)时,开发人员往往会在缓存策略的设计上狠下功夫.这是因为,如果将这种环境下不常变更的数据临时存放在应用程序服务器或是用户机器上的话,可以避 ...

  6. iOS 网络/本地 图片 按自定义比例缩放 不失真 方法

    我尝试了很多种方法,终于,设计了一个方法,能按自己规定的大小压缩 还没失真 如果以后不好用 我再升级 分享给大家: + (CGRect )scaleImage:(UIImage *)image toS ...

  7. iOS 左右滑动 手势 响应方法

    1. @property (nonatomic, strong) UISwipeGestureRecognizer *leftSwipeGestureRecognizer; @property (no ...

  8. swift3.0基础语法

    swift 3.0 基础语法 目录 01-变量和常量 02-运算符 03-可选项 04-条件语句 05-循环 06-字符串 07-元组 08-数组 09-字典 10-对象和类 11-枚举 12-属性 ...

  9. UVa Problem 10132 File Fragmentation (文件还原) 排列组合+暴力

    题目说每个相同文件(01串)都被撕裂成两部分,要求拼凑成原来的样子,如果有多种可能输出一种. 我标题写着排列组合,其实不是什么高深的数学题,只要把最长的那几个和最短的那几个凑一起,然后去用其他几个验证 ...

  10. ng-sortable-支持触屏的拖拽排序

    1.首先是到https://github.com/a5hik/ng-sortable/tree/master/dist下载所需的文件:ng-sortable.min.js,ng-sortable.cs ...