WPFMediaKit摄像头处理
WPFMediaKit可以在wpf中使用摄像头的安装包,原来感觉很神秘的东西,现在感觉也挺简单了,其实工作之中,你不可能什么都会,什么都学到,要学会解决问题的技巧,遇到问题如何去找去问。
首先把添加WPFMediaKit.dll到项目中去,然后添加对其的引用。
1, 然后在wpf的xmal中添加一句代码如下:
1 xmlns:wpfmedia="clr-namespace:WPFMediaKit.DirectShow.Controls;assembly=WPFMediaKit"
2, 在xmal中手动添加控件,用于显示预览的画面。
1 <wpfmedia:VideoCaptureElement Name="vce" Height="200" DockPanel.Dock="Top"> 2 3 </wpfmedia:VideoCaptureElement>
3,然后是后台代码:现在onload里:
1 private void Window_Loaded(object sender, RoutedEventArgs e) 2 { 3 //现在电脑上装的所有摄像头中,选择一个摄像头。 4 cb.ItemsSource = MultimediaUtil.VideoInputNames; 5 //设置第0个摄像头为默认摄像头。 6 if (MultimediaUtil.VideoInputNames.Length > 0) 7 { 8 cb.SelectedIndex = 0; 9 } 10 else 11 { 12 MessageBox.Show("电脑没有安装任何摄像头"); 13 } 14 } 15 16 private void cb_SelectionChanged(object sender, SelectionChangedEventArgs e) 17 { 18 vce.VideoCaptureSource = (string)cb.SelectedItem; 19 }
4,然后是拍照,保存照片啦。
1 private void Button_Click(object sender, RoutedEventArgs e) 2 { 3 //抓取控件做成图片 4 RenderTargetBitmap bmp = new RenderTargetBitmap( 5 (int)vce.ActualWidth, (int)vce.ActualHeight, 6 96, 96, PixelFormats.Default); 7 bmp.Render(vce); 8 BitmapEncoder encoder = new JpegBitmapEncoder(); 9 encoder.Frames.Add(BitmapFrame.Create(bmp)); 10 using (MemoryStream ms = new MemoryStream()) 11 { 12 encoder.Save(ms); 13 byte[] captureData = ms.ToArray(); 14 //保存图片 15 File.WriteAllBytes("d:/1.jpg", captureData); 16 } 17 vce.Pause(); 18 }
这样就OK了,看一下效果吧。
效果好不错吧。
---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------