h5调用手机摄像头获取图片用于人脸识别

h5调用手机摄像头获取图片用于人脸识别

1、安卓手机获取前置摄像头,并在video标签显示
注:navigator.mediaDevices.getUserMedia文档说明兼容Safari11,实测不好用

        function InitMedia(){
        	let video = document.getElementById('video');
        	let option = {
					video: {
						width: 200,
						height: 200,
						facingMode:  "user" //  user:获取前置摄像头,environment:获取后置摄像头
					}, //使用摄像头对象
					audio: false //音频 
				}};
        	// 旧版使用媒体Api已废弃,主要用于浏览器向后兼容
        	navigator.getMedia =navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
			// 新版使用媒体api
			if(navigator.mediaDevices.getUserMedia){
				navigator.mediaDevices.getUserMedia(option).then((strem)=>{
					try {
						if('srcObject' in video){ video.srcObject = strem; }
						else{ video.src = window.URL.createObjectURL(strem);  }
					} catch (error) {
						console.error(`${err.name}: ${err.message}`);
					}
					video.play();
					// 通过canvas定时获取video画面传给后台
					// getface();
					// interval=setInterval(getface,2000); 
				}).catch((err) => {
					$.toast('error')
					console.error(`${err.name}: ${err.message}`);
				});
			}else if(navigator.getMedia){
				navigator.getMedia(option, function(strem) {
					try {
						if('srcObject' in video){ video.srcObject = strem; }
						else{ video.src = window.URL.createObjectURL(strem);  }
					} catch (error) {
						console.error(`${err.name}: ${err.message}`);
					}
					video.play();
					// getface();
					// interval=setInterval(getface,2000);
				}, function(error) {
					setTimeout(()=>{ InitMedia();}, 200);
				});
			}else{
				console.log('浏览器不支持getUserMedia');
			}
        }

2、苹果手机获取前置摄像头拍照上传,用于人脸识别
注:该方法在安卓手机也可使用

		//  使用input获取苹果前置摄像头
		<input type="file" id='upload_file' accept="image/*" capture='user'>
		// js部分
		// exif获取图片旋转值
		<script type="text/javascript" src="../js/exif.js" ></script>
		<script type="text/javascript" src="../js/rotate-photo.js" ></script>
		jQuery('#upload_file').change(function () {
			let url = '', imgbase64 = '', file = '';
			//获取file对象URL 
			if (navigator.userAgent.indexOf("MSIE") >= 1) { // IE
				file = document.getElementById('upload_file').value;
			} else if (navigator.userAgent.indexOf("Firefox") > 0) { // Firefox
				file = document.getElementById('upload_file').files.item(0)
			} else if (navigator.userAgent.indexOf("Chrome") > 0) { // Chrome
				file = document.getElementById('upload_file').files[0];
			}else{
				file = document.getElementById('upload_file').files[0];
			}
			// 用exif.js和canvas解决部分型号手机拍照照片旋转90度的问题
			// imgFile旋转后的图片
			rotatePhoto(file, function(imgFile){
				url = window.URL.createObjectURL(imgFile);
				let image = document.getElementById('imgFace');
				image.src = url;
				// image.onload = function () {
				// 	imgbase64 = getBase64Image(image); // 获取base64图片数据
				// 	uploadFace(imgbase64); // 上传图片到后台
				// } 
			})
		});

3、附件
//exif.js
exif.js
//rotate-photo.js
rotate-photo.js

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值