123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- using System.Windows.Shapes;
- using Platform.Presentation.Interfaces;
- using System.IO;
- using System.ComponentModel;
-
- namespace TellerSystem.Controls.Ext.Controls
- {
- /// <summary>
- /// ImageManager.xaml 的交互逻辑
- /// </summary>
- [DesignTimeVisible(false)]
- public partial class ImageManager : UserControl
- {
- public ImageManager()
- {
- InitializeComponent();
- }
- /// <summary>
- /// 注册的图像采集信息列表
- /// </summary>
- private List<ImageCollectInfo> _registerImageCollectInfo = new List<ImageCollectInfo>();
-
- /// <summary>
- /// 注册图像采集动作
- /// </summary>
- /// <param name="name"></param>
- /// <param name="description"></param>
- public void RegisterImageCollectInfo(string name, string description)
- {
- if (_registerImageCollectInfo.Exists(x => x.Name == name))
- {
- throw new ArgumentOutOfRangeException(string.Format("图像采集控件:{0}采集项已经注册!", name));
- }
- _registerImageCollectInfo.Add(new ImageCollectInfo { Name = name, Description = description, Collectable = false });
- }
-
- /// <summary>
- /// 设置是否执行采集动作
- /// </summary>
- /// <param name="name"></param>
- /// <param name="flag"></param>
- public void SetCollectable(string name, bool flag, string description = null)
- {
- var item = _registerImageCollectInfo.FirstOrDefault(x => x.Name == name);
- if (item != null)
- {
- if (!string.IsNullOrEmpty(description))
- item.Description = description;
- item.IsCollected = false;
- item.Collectable = flag;
- //更新数据源
- DataList.ItemsSource = _registerImageCollectInfo.Where(x => x.Collectable);
- DataList.Items.Refresh();
- }
- }
-
- /// <summary>
- /// 获取指定的图像采集数据
- /// </summary>
- /// <param name="name"></param>
- /// <returns></returns>
- public byte[] GetCollectImage(string name)
- {
- byte[] ret = null;
- var item = _registerImageCollectInfo.FirstOrDefault(x => x.Name == name && x.Collectable && x.IsCollected);
- if (item != null)
- {
- //将图片转换成数据
- ret = item.Data;
- }
- return ret;
- }
-
- /// <summary>
- /// 取出所有已采集的图像信息
- /// </summary>
- /// <returns></returns>
- public Dictionary<string, byte[]> GetAllCollectImage()
- {
- var ret = new Dictionary<string, byte[]>();
- var list = _registerImageCollectInfo.FindAll(x => x.Collectable && x.IsCollected);
- foreach (var item in list)
- {
- if (item.IsCollected)
- {
- //取出图像数据
- ret.Add(item.Name, item.Data);
- }
- }
- return ret;
- }
-
- /// <summary>
- /// 是否全部采集完毕
- /// </summary>
- /// <returns></returns>
- public bool IsCollectAll()
- {
- var list = _registerImageCollectInfo.Find(x => x.Collectable && !x.IsCollected);
- return list == null;
- }
-
- class ImageCollectInfo
- {
- /// <summary>
- /// 图像id
- /// </summary>
- public string Name { get; set; }
- /// <summary>
- /// 描述
- /// </summary>
- public string Description { get; set; }
- /// <summary>
- /// 是否已采集
- /// </summary>
- public bool IsCollected { get; set; }
- /// <summary>
- /// 是否参与采集
- /// </summary>
- public bool Collectable { get; set; }
- /// <summary>
- /// 数据图像
- /// </summary>
- public ImageSource ImageSource { get; set; }
- /// <summary>
- /// 图像数据
- /// </summary>
- public byte[] Data { get; set; }
- }
-
- private void CollectButton_Click(object sender, RoutedEventArgs e)
- {
- //调用采集方法采集图片
- var btn = sender as Button;
- if (btn != null && btn.Tag is ImageCollectInfo)
- {
- var info = btn.Tag as ImageCollectInfo;
- //若为身份证,则采用去黑边
- var data = CollectImage(info.Description.Contains("身份证"));
- if (data == null) return;
- info.Data = data;
- var imageSourceConverter = new ImageSourceConverter();
- info.ImageSource = imageSourceConverter.ConvertFrom(new System.IO.MemoryStream(info.Data)) as ImageSource;
- info.IsCollected = true;
-
- DataList.Items.Refresh();
- }
- }
-
- private byte[] CollectImage(bool isIDCard)
- {
- ////采用文件录入
- var dialog = new Microsoft.Win32.OpenFileDialog();
- dialog.ShowDialog(Application.Current.MainWindow);
- if (string.IsNullOrEmpty(dialog.FileName)) return null;
- return File.ReadAllBytes(dialog.FileName);
-
- //采集图片
- //var page = new CameraViewer(isIDCard);
- //ParentIPage.ShowPage(page, "扫描图像");
- //page.CloseCamera();
- //return page.ViewStateData.GetDictionaryItem<byte[]>("ImageData");
- }
-
- #region ParentIPage
- private IPage _parentIPage;
- /// <summary>
- /// Owner
- /// </summary>
- public IPage ParentIPage
- {
- get
- {
- if (_parentIPage == null)
- {
- _parentIPage = GetCurrentIPage(this);
- }
- return _parentIPage;
- }
- set { _parentIPage = value; }
- }
- private IPage GetCurrentIPage(DependencyObject visual)
- {
- IPage ret = null;
- if (visual != null)
- {
- var parent = LogicalTreeHelper.GetParent(visual);
- if (parent != null)
- {
- if (parent is IPage)
- ret = parent as IPage;
- else
- ret = GetCurrentIPage(parent);
- }
- }
- return ret;
- }
- #endregion
-
- }
- }
|