【MediaKit】WPF项目中 调用摄像头拍照的开发包
今天遇到一个 人事的项目,项目中需要调用摄像头给员工照相。如何解决这个问题呢?
介绍一个开发包给你,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项目中 调用摄像头拍照的开发包的更多相关文章
- html5中调用摄像头拍照
方法: getCamera: 获取摄像头管理对象 对象: Camera: 摄像头对象 CameraOption: JSON对象.调用摄像头的參数 PopPosition: JSON对象,弹出拍照或摄像 ...
- android: 调用摄像头拍照
很多应用程序都可能会使用到调用摄像头拍照的功能,比如说程序里需要上传一张图片 作为用户的头像,这时打开摄像头拍张照是最简单快捷的.下面就让我们通过一个例子来学 习一下,如何才能在应用程序里调用手机的摄 ...
- 在WPF程序中使用摄像头兼谈如何使用AForge.NET控件(转)
前言: AForge.NET 是用C#写的一个关于计算机视觉和人工智能领域的框架,它包括图像处理.神经网络.遗传算法和机器学习等.在C#程序中使用摄像头,我习惯性使用AForge.NET提供的类库.本 ...
- C# - VS2019调用AForge库实现调用摄像头拍照功能
前言 作为一名资深Delphi7程序员,想要实现摄像头扫描一维码/二维码功能,发现所有免费的第三方库都没有简便的实现办法,通用的OpenCV或者ZXing库基本上只支持XE以上的版本,而且一维码的识别 ...
- android ——调用摄像头拍照和相册
先在布局文件中加入两个按钮和一个图片控件 <?xml version="1.0" encoding="utf-8"?> <LinearLayo ...
- Java乔晓松-android中调用系统拍照功能并显示拍照的图片
android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...
- AForge调用摄像头拍照时设置分辨率
简单记录下AForge2.2.5.0版本调用摄像头拍照时设置分辨率的方法. FilterInfo info = _videoDevices[0];//获取第一个摄像头 _cameraDevice = ...
- Mac笔记本中是用Idea开发工具在Java项目中调用python脚本遇到的环境变量问题解决
问题描述: mac笔记本本身会自带几个python版本,比如python2.7版本,我没有改动mac默认的python版本,只是安装了python3.7版本. 使用Pycharm开发Python项目没 ...
- WPF项目中解决ConfigurationManager不能用(转)
https://blog.csdn.net/MOESECSDN/article/details/78107888 在WPF项目中遇到这样的问题,做一下笔记.希望对自己和读者都有帮助. 在aap.con ...
随机推荐
- shell 笔记
shell 笔记 通配符 没有 '.' [Aa] 表示 A 或者 a ? 表示任意字符 * 表示任意字符串 IFS data='name, sex, rollno, location' oldIFS= ...
- a letter and a number
描述we define f(A) = 1, f(a) = -1, f(B) = 2, f(b) = -2, ... f(Z) = 26, f(z) = -26;Give you a letter x ...
- Easier Done Than Said?
Problem Description Password security is a tricky thing. Users prefer simple passwords that are easy ...
- 使用post方式提交数据
post提交代码 public class MainActivity extends Activity { @Override protected void onCreate(Bundle saved ...
- Java基础知识强化之集合框架笔记67:Hashtable的实现原理
至于Hashtable的实现原理,直接参考网友的博客,总结很全面: 深入Java集合学习系列:Hashtable的实现原理
- 【开源项目12】Retrofit – Java(Android) 的REST 接口封装类库
Retrofit官网:http://square.github.io/retrofit/ Retrofit 和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit ...
- 【Android 界面效果23】LayoutInflater作用及使用
作用: 1.对于一个没有被载入或者想要动态载入的界面, 都需要使用inflate来载入. 2.对于一个已经载入的Activity, 就可以使用实现了这个Activiyt的的findViewById方 ...
- 《MFC游戏开发》笔记五 定时器和简单动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9332377 作者:七十一雾央 新浪微博:http:// ...
- js自动刷新页面代码
<script language="JavaScript">function myrefresh(){window.location.reload();}setTime ...
- MySQL中/*!40100注释
MySQL中的注释 MySQL中的注释有三种: # 注释内容 -- 注释内容 /* 注释内容*/ 但是,在导出的SQL文件中,也会看到类似如下内容的注释: CREATE DATABASE `blog` ...