摄像头拍照 ajax 传图片,H5实现调用本地摄像头并拍照将照片传向后台

H5实现调用本地摄像头并拍照将照片传向后台

目的:为了实现在确认个人信息后要实现拍照传向后台

代码:

var video = document.getElementById('video');

var canvas = document.getElementById('canvas');

var context = canvas.getContext('2d');

//访问用户媒体设备的兼容方法

function getUserMedia(constraints, success, error) {

if (navigator.mediaDevices.getUserMedia) {

//最新的标准API

navigator.mediaDevices.getUserMedia(constraints).then(success).catch(error);

} else if (navigator.webkitGetUserMedia) {

//webkit核心浏览器

navigator.webkitGetUserMedia(constraints,success, error)

} else if (navigator.mozGetUserMedia) {

//firfox浏览器

navigator.mozGetUserMedia(constraints, success, error);

} else if (navigator.getUserMedia) {

//旧版API

navigator.getUserMedia(constraints, success, error);

}

}

function success(stream) {

//兼容webkit核心浏览器

// var CompatibleURL = window.URL || window.webkitURL;

//video.src = CompatibleURL.createObjectURL(stream);

//将视频流设置为video元素的源

video.srcObject = stream;

video.play();

}

function error(error) {

console.log('访问用户媒体设备失败${error.name}, ${error.message}');

}

if (navigator.mediaDevices.getUserMedia || navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia) {

getUserMedia({video : {width:200, height:200}}, success, error);

} else {

alert('不支持访问用户媒体');

}

//图片上传到服务器

//获取Canvas的编码。

function uploadImage(){

canvas.width = 300;

canvas.height = 300;

context.drawImage(video, 0, 0, 300, 300);

var imgData = canvas.toDataURL();

//上传到后台。

var uploadAjax = $.ajax({

type: "post",

//后端需要调用的地址

url:"test",

data: JSON.stringify({"imgData": imgData}),

contentType:"json/application",

//设置超时

timeout:10000,

async: true,

success: function (htmlVal) {

//成功后回调

},

error: function(data) {

},

//调用执行后调用的函数

complete: function (XMLHttpRequest, textStatus) {

if(textStatus == 'timeout'){

uploadAjax.abort(); //取消请求

//超时提示:请求超时,请重试

alert("请求超时,请重试")

//请求超时返回首页

closeCard();

}

}

});

}

用法:在需要拍照的时候调用uploadImage()方法

例:

拍照

详解:调用摄像头拍照用到了video标签、canvas、getUserMedia、ajax

video调用本地摄像头

canvas作为画布保存照片

// 获取HTML页面中的< canvas>元素

var canvas = document.getElementById("canvas");

/*

通过< canvas>元素,创建画布对象

使用getContext(type)函数,创建画布对象

*/

var context = canvas.getContext("2d");

// 利用画布对象,进行绘制图形

context.drawImage(video, 0, 0, 300, 300);

var imgData = canvas.toDataURL();

getUserMedia ( constraints, successCallback, errorCallback );

访问用户媒体设备的兼容方法

详解见:navigator.getUserMedia 这个方法已经被废弃,但是一些浏览器还可以兼容,新的api见navigator.mediaDevices.getUserMedia

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值