zoukankan      html  css  js  c++  java
  • WPFMediaKit照相功能

    最近写的一个WPF照相功能,往各位吐槽,提供优化

    在WPF 设计器中添加如下代码

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

    添加显示摄像头图像控件

    <wpfmedia:VideoCaptureElement DockPanel.Dock="Top" Name="captureElement" Margin="0,33,0,37"/>

    在cs代码文档中添加如下代码

    在引用程序集中添加WPFMediaKit程序集

    引用类名空间,添加如下代码

    using WPFMediaKit;
    using WPFMediaKit.DirectShow.Controls;

    加载摄像头

    void MainWindow_Loaded(object sender, RoutedEventArgs e)
            {
                //加载摄像头
                cmbCameras.ItemsSource = MultimediaUtil.VideoInputNames;
                if (MultimediaUtil.VideoInputNames.Length > 0)
                {
                    cmbCameras.SelectedIndex = 0;
                }
                else
                {
                    MessageBox.Show("没有可用摄像头!");
                    BtnCap.IsEnabled = false;
                    BtnOk.IsEnabled = false;
                    BtnNew.IsEnabled = false;
                }
            }

    拍照

     private void BtnCap_Click(object sender, RoutedEventArgs e)
            {
                //captureElement. 怎么抓取高清的原始图像
                RenderTargetBitmap bmp = new RenderTargetBitmap((int)captureElement.ActualWidth, (int)captureElement.ActualHeight,
                    96, 96, PixelFormats.Default);
                bmp.Render(captureElement);
                BitmapEncoder encoder = new JpegBitmapEncoder();
                encoder.Frames.Add(BitmapFrame.Create(bmp));
                using (MemoryStream ms = new MemoryStream())
                {
                    encoder.Save(ms);
                    CaptureData = ms.ToArray();//将拍照的图像转化为二进制数组
                }
            }

    确定拍照

     private void BtnOk_Click(object sender, RoutedEventArgs e)
            {
                if (CaptureData != null)
                {
                    DialogResult = true;
                }
                else
                {
                    MessageBox.Show("未拍照图像");
                    return;
                }
            }

    重拍

    private void BtnNew_Click(object sender, RoutedEventArgs e)
            {
                captureElement.Play();
            }

    摄像头切换

    private void cmbCameras_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                captureElement.VideoCaptureSource = (string)cmbCameras.SelectedItem;
            }

    将二进制转化成png

    private BitmapImage ShowImage(byte[] imgbytes)
            {
                MemoryStream stream = new MemoryStream(imgbytes);
                BitmapImage bmpImg = new BitmapImage();
                bmpImg.BeginInit();
                bmpImg.StreamSource = stream;
                bmpImg.EndInit();
                return bmpImg;
            }

    图片

  • 相关阅读:
    今天的赢在中国推迟了,给大家推荐个视频,看看什么是真正的中华武术
    赢在中国080312
    盛大(上海)诚聘软件测试人员
    jQuery入门[2]-选择器
    阿里巴巴诚信通成为《赢在中国》的实战项目,要花多少钱?--《赢在中国》(20080408)
    唐僧晒书
    用于生成网页、WAP、JS中文编码的Unicode编码工具
    jQuery入门[5]-AJAX
    中国哲学(一)
    20071212公映的《色即是空2》(sex is zero 2)字幕文件
  • 原文地址:https://www.cnblogs.com/tuqun/p/3635164.html
Copyright © 2011-2022 走看看