调用打印机拍照的工具类
来源:互联网 发布:网络大电影收入计算 编辑:程序博客网 时间:2024/05/20 01:10
using AForge.Controls;using AForge.Video;using AForge.Video.DirectShow;using Desktop.Protocol.Models.WhCommModels;using Destop.Infrastucture.Helper.Log;using System;using System.Collections.Generic;using System.Drawing;using System.IO;using System.Linq;using System.Text;using System.Windows;using System.Windows.Media.Imaging;namespace ATM.Launcher.Helper{ /// <summary> /// 摄像头拍照 /// </summary> public class TakePhotoHelper { private VideoSourcePlayer VideoSrcPlayer = new VideoSourcePlayer(); private static readonly object lockobj = new object(); private static TakePhotoHelper instance = null; private VideoCaptureDevice videoSource0 ; private TakePhotoHelper() { } public static TakePhotoHelper Instance { get { lock (lockobj) { if (instance == null) { instance = new TakePhotoHelper(); } return instance; } } } public bool Start() { try { FilterInfoCollection devices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (devices.Count <= 0) { return false; } videoSource0 = new VideoCaptureDevice(devices[0].MonikerString); videoSource0.DesiredFrameRate = 30; this.OpenVideoSource(videoSource0); } catch (Exception ex) { WMSLog.WriteLog(LogType.Error, ex.Message); return false; } return true; } private void OpenVideoSource(IVideoSource source) { VideoSrcPlayer.SignalToStop(); VideoSrcPlayer.WaitForStop(); VideoSrcPlayer.VideoSource = source; VideoSrcPlayer.Start(); } /// <summary> /// 拍照 /// </summary> /// <returns></returns> public bool TakePhoto(ref WhPhoto photoShotModel) { if (videoSource0 == null || !videoSource0.IsRunning) { return false; } try { if (VideoSrcPlayer == null) return false; System.Drawing.Bitmap bitmap = VideoSrcPlayer.GetCurrentVideoFrame(); if (bitmap == null) return false; IntPtr ip = Image.FromHbitmap(bitmap.GetHbitmap()).GetHbitmap(); BitmapSource bitmapSource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( ip, IntPtr.Zero, Int32Rect.Empty, System.Windows.Media.Imaging.BitmapSizeOptions.FromEmptyOptions()); bitmap.Dispose(); BitmapEncoder encoder = new JpegBitmapEncoder(); encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); System.IO.MemoryStream pngMemStream = new MemoryStream(); encoder.Save(pngMemStream); pngMemStream.Close(); byte[] imageBytes = pngMemStream.ToArray(); string url = Convert.ToBase64String(imageBytes); photoShotModel = new WhPhoto(); photoShotModel.photo = url; return true; } catch (Exception ex) { WMSLog.WriteLog(LogType.Error, "拍照失败:" + ex.ToString()); return false; } } /// <summary> /// 关闭摄像头 /// </summary> public void Stop() { try { if (VideoSrcPlayer != null) { //停止VideoSrcPlayer线程,否则无法关闭窗体 VideoSrcPlayer.SignalToStop(); VideoSrcPlayer.WaitForStop(); VideoSrcPlayer.Dispose(); videoSource0 = null; } } catch (Exception ex) { WMSLog.WriteLog(LogType.Error, "关闭摄像头失败:" + ex.ToString()); } } }}
阅读全文
1 0
- 调用打印机拍照的工具类
- 调用系统拍照和相册的集成工具类(包含Popwindow的使用)
- 封装好的Potoutil工具类,调用拍照、相册以及对图片做处理
- Fragment调用PopupWindow工具封装类开启拍照或相册选择图片后无法回调的解决办法!
- QT调用打印机的实现
- 调用摄像头的拍照功能
- Android 调用系统相机进行拍照 使用自带的图片选择器和裁剪工具
- 有关iReport调用打印机的问题
- java调用打印机打印自定义的图片
- Android下的POS打印机调用
- ESC/POS协议打印机工具类(java)
- 拍照 相册 (显示) 图片拍照旋转 工具类
- android -调用系统的拍照程序
- 14.3.1 调用系统的拍照功能
- android 拍照 onCreate() 调用两次的问题
- android 拍照 onCreate() 调用两次的问题
- 实现调用Android手机的拍照功能
- 实现调用Android手机的拍照功能
- 搭建高可用mongodb集群-Sharding 分片
- 上传文件时 form表单按顺序填写,否则找不到aciton方法
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
- java.lang.NoClassDefFoundError: org/springframework/expression/PropertyAccessor
- java菜鸟体验
- 调用打印机拍照的工具类
- iOS 利用 NEHotspotHelper 获取 WiFi 列表
- android taskAffinity属性
- java连接oracle修改表显示id标识符错误。
- 面试题1 -- Java 中,怎么在格式化的日期中显示时区?
- 【读书笔记】Android源码设计模式解析与实战(二)——单例模式
- Java01
- HDU-5734 Acperience(公式化简)
- 通讯方式