移动端扫描身份证获取身份证信息(前端部分)
最近做了个扫描身份证的功能主要分以下几个步骤
1:使用H5+调用手机底层相机拍照功能
if(window.plus){
playCamera();
}else{
document.addEventListener( "plusready",playCamera(), false);
}
调用相机拍照:
playCamera: function(){
var _self=Ext.getCmp("add_client_view");
var cmr = plus.camera.getCamera();
var res = cmr.supportedImageResolutions[0];
var fmt = cmr.supportedImageFormats[0];
cmr.captureImage( function( path ){
_self.GetBase64Code(path);
},
function( error ) {
alert( "Capture image failed: " + error.message );
}
);
},
2:将获取到的图片转换成base64格式的数据
这里转换base64格式照片有2种方法:
(1): 使用H5的 FileReader 根据图片路劲转换成base64格式图片;
//将图片转换为base64格式
Img2dataURL : function(path){
plus.io.resolveLocalFileSystemURL(path, function(entry){
entry.file(function(file){
debugger
var reader = new plus.io.FileReader();
reader.onload = function (e) {
imgBase64=e.target.result;
console.log("****"+e.target.result);
};
reader.readAsDataURL(file);
},function(e){
Ext.toast("读写出现异常: " + e.message );
})
})
},
(2):使用H5+提供的Bitmap原生图片对象
具体方法请看这里http://www.html5plus.org/doc/zh_cn/nativeobj.html#plus.nativeObj.Bitmap;
有详细说明
GetBase64Code:function(path){
var bitmap = new plus.nativeObj.Bitmap("xxx");
// 从本地加载Bitmap图片将图片转换为base64格式
bitmap.load(path,function(){
var base4=bitmap.toBase64Data();
var datastr=base4.split(',',3);//截取掉没用的前缀
var imgbase64 = [];
if(datastr.length>1)
{
imgbase64.push(datastr[1]);
}else
{
imgbase64.push(datastr[0]);
}
console.log(imgbase64);
var traceNo=Utils.genTrn();//流水号
//然后就是发送ajax请求
},function(e){
console.log('加载图片失败:'+JSON.stringify(e));
});
},
(3)调用阿里身份证扫描信息接口;获取身份证信息;