记一次笔试面试题

记一次笔试面试题经历

刚拿到题目的时候是有点懵逼的。问了一下面试官,确定了一下需求。开始着手

附上笔试题链接(http://face.gokxd.cn/)

题目大体需求:两张照片合成一张,只替换照片的人脸部分

明确步骤:

①、给出的页面有点不简洁明了,自己动手重新设计布局
②、确定开放api接口(推荐使用face++,传送门
③、上传照片时需要判断是否是人物照片(调用接口地址,传送门

附上部分代码部分

识别人脸部分代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$.ajax({
url: url,
type: 'POST',
data: data,
cache: false,
success(data) {
console.log(data.faces.length)
//data.faces 被检测出的人脸数组,具体包含内容见下文。注:如果没有检测出人脸则为空数组

if(data.faces.length != 0){
document.getElementById('show').src=base1;
}else if(data.faces.length == 0){
$.alert({
title: '',
text: '未检测到人脸,请重新选择图片!',
onOK: function () {
//点击确认
}
});
}
},

})
人脸融合部分代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
var postData = {
api_key:'你注册的api_key',
api_secret:'你注册的api_secret',
template_base64:mouldPhoSrc,
// template_rectangle:'70,80,100,100',
merge_base64:fusePhoSrc
}
$.ajax({
dataType: 'json',
type: 'POST' ,
url: 'https://api-cn.faceplusplus.com/imagepp/v1/mergeface',
data: postData,
success: function(response){
if(typeof(response.error_message) == "undefined"){
// todo: 在这里添加生成后的逻辑,response.result 为生成图的base64编码
$('.uploadpic').attr('src', 'data:image/jpg/png;base64,' + response.result);
}else{
// todo: 在这里添加上传失败的逻辑
alert('请重新上传照片23');
}
},
error: function(xhr, status, error){
console.log(xhr.responseText);
// todo: 在这里添加上传失败的逻辑
alert('请重新上传照片');
}
});
附上完整项目链接,由于没做屏幕适配,所以移动端画面有点乱,后续进行优化。 人脸融合传送门
-------------本文结束感谢您的阅读-------------