欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  不支持IE浏览器(需要使用flash插件),支持移动端,未经过完全测试
 
  PC端使用的时候,HTML页面需要预留video标签,canvas标签
 
  移动端使用的时候,HTML页面需要预留file标签,canvas标签,img标签
 
  (function(window,document){
 
  window.camera={
 
  init:function(options){
 
  /**
 
  *options属性示例
 
  *videoID:video控件ID
 
  *canvasID:canvas控件ID
 
  *fileID:type为file的input控件的ID
 
  *imageID:img控件的ID
 
  *videoEnable:是否启用摄像头
 
  *audioEnable:是否启用麦克风
 
  *videoWidth:视频宽度
 
  *videoHeight:视频高度
 
  *photoWidth:拍照宽度
 
  *photoHeight:拍照高度
 
  */
 
  _options=options;
 
  if(isMobileTerminal()){
 
  initMobileTerminal();
 
  }else{
 
  initComputerTerminal();
 
  }
 
  },
 
  photo:function(){
 
  if(isMobileTerminal()){
 
  photoMobileTerminal();
 
  }else{
 
  photoComputerTerminal();
 
  }
 
  }
 
  };
 
  let_options=null;
 
  functioninitComputerTerminal(){
 
  letvideoDom=document.getElementById(_options.videoID);
 
  if(!videoDom){
 
  alert('Video控件无效');
 
  return;
 
  }
 
  letcanvasDom=document.getElementById(_options.canvasID);
 
  if(!canvasDom){
 
  alert('Canvas控件无效');
 
  return;
 
  }
 
  canvasDom.setAttribute('width',_options.photoWidth+'px');
 
  canvasDom.setAttribute('height',_options.photoHeight+'px');
 
  letparameters={
 
  video:_options.videoEnable?{
 
  width:_options.videoWidth,
 
  height:_options.videoHeight
 
  }:false,
 
  audio:_options.audioEnable
 
  };
 
  navigator.mediaDevices.getUserMedia(parameters)
 
  .then(function(MediaStream){
 
  video.srcObject=MediaStream;
 
  video.play();
 
  }).catch(function(reason){
 
  console.log(reason);
 
  alert(reason);
 
  });
 
  }
 
  functionphotoComputerTerminal(){
 
  letvideoDom=document.getElementById(_options.videoID);
 
  if(!videoDom){
 
  alert('Video控件无效');
 
  return;
 
  }
 
  letcanvasDom=document.getElementById(_options.canvasID);
 
  if(!canvasDom){
 
  alert('Canvas控件无效');
 
  return;
 
  }
 
  letcontext=canvasDom.getContext('2d');
 
  context.drawImage(videoDom,0,0,_options.photoWidth,_options.photoHeight);
 
  }
 
  functioninitMobileTerminal(){
 
  letfileDom=document.getElementById(_options.fileID);
 
  if(!fileDom){
 
  alert('File控件无效');
 
  return;
 
  }
 
  fileDom.setAttribute('accept','image/*');
 
  fileDom.setAttribute('capture','camera');
 
  letcanvasDom=document.getElementById(_options.canvasID);
 
  if(!canvasDom){
 
  alert('Canvas控件无效');
 
  return;
 
  }
 
  canvasDom.setAttribute('width',_options.photoWidth+'px');
 
  canvasDom.setAttribute('height',_options.photoHeight+'px');
 
  letimageDom=document.getElementById(_options.imageID);
 
  if(!imageDom){
 
  alert('Image控件无效');
 
  return;
 
  }
 
  fileDom.addEventListener('change',function(){
 
  letfile=fileDom.files[0];
 
  letreader=newFileReader();
 
  reader.onloadend=function(){
 
  imageDom.setAttribute('src',reader.result);
 
  setTimeout(function(){
 
  letcontext=canvas.getContext("2d");
 
  context.drawImage(imageDom,0,0,_options.photoWidth,_options.photoHeight);
 
  },300);
 
  };
 
  reader.readAsDataURL(file);
 
  });
 
  }
 
  functionphotoMobileTerminal(){
 
  letfileDom=document.getElementById(_options.fileID);
 
  fileDom.click();
 
  }
 
  functionisMobileTerminal(){
 
  if(/AppleWebKit.*Mobile/i.test(navigator.userAgent)||/Mobile/.test(navigator.userAgent)||/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcatel|BIRD|DBTEL|Dopod|PHILIPS|HAIER|LENOVO|MOT-|Nokia|SonyEricsson|SIE-|Amoi|ZTE/.test(navigator.userAgent))
 
  return/Android|webOS|iPhone|iPod|BlackBerry/i.test(navigator.userAgent);
 
  returnfalse;
 
  }
 
  })(window,document);

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h56460.shtml