Commit dc854fcf929e2a1850f77b2a5d2349f78c235116

Authored by yvan.ni
1 parent f89ad8d2

先不要用宜肤小程序api.

packageD/pages/AI-test-skin/analyse/analyse.js
@@ -4,7 +4,6 @@ const request = app.request; @@ -4,7 +4,6 @@ const request = app.request;
4 const os = app.globalData; 4 const os = app.globalData;
5 const setting = os.setting; 5 const setting = os.setting;
6 const ut = require('../../../../utils/util'); 6 const ut = require('../../../../utils/util');
7 -import { pluginGD } from '../../../ai_config/config'  
8 Page({ 7 Page({
9 8
10 /** 9 /**
@@ -12,174 +11,171 @@ Page({ @@ -12,174 +11,171 @@ Page({
12 */ 11 */
13 data: { 12 data: {
14 iurl: setting.imghost, 13 iurl: setting.imghost,
15 - per: 0,  
16 - timer: 0,  
17 - img: null,  
18 - sourceimg: null,  
19 - err_map: null, 14 + per:0,
  15 + timer:0,
  16 + img:null,
  17 + sourceimg:null,
  18 + err_map:null,
20 }, 19 },
21 20
22 /** 21 /**
23 * 生命周期函数--监听页面加载 22 * 生命周期函数--监听页面加载
24 */ 23 */
25 onLoad: function (options) { 24 onLoad: function (options) {
26 - //初始化美图测肤插件  
27 - var plugin = requirePlugin('mtSkinSdk')  
28 - plugin.setConfig(pluginGD)  
29 - var th = this;  
30 - //设置错误码分析  
31 - this.set_err_map();  
32 - //进度条加载  
33 - this.timer();  
34 - //接口开始分析  
35 - setTimeout(function () {  
36 - //th.analysis_img();  
37 - //先检验一下图片  
38 - th.mt_check(function () {  
39 -  
40 - });  
41 - }, 800) 25 + var th=this;
  26 + //设置错误码分析
  27 + this.set_err_map();
  28 + //进度条加载
  29 + this.timer();
  30 + //接口开始分析
  31 + setTimeout(function () {
  32 + //th.analysis_img();
  33 + //先检验一下图片
  34 + th.img_check(function () {
  35 +
  36 + });
  37 + },800)
42 38
43 }, 39 },
44 //定时器 40 //定时器
45 - timer: function (func) {  
46 - var per = this.data.per + 5;  
47 - var th = this;  
48 - if (per < 96) {  
49 - th.setData({ per: per });  
50 - setTimeout(function () {  
51 - th.timer();  
52 - }, 400)  
53 - } 41 + timer:function (func) {
  42 + var per=this.data.per+5;
  43 + var th=this;
  44 + if(per<96){
  45 + th.setData({per:per});
  46 + setTimeout(function () {
  47 + th.timer();
  48 + },400)
  49 + }
54 }, 50 },
55 51
56 //错误码表 52 //错误码表
57 - set_err_map: function () {  
58 - var map = {  
59 - "2": "服务暂不可用",  
60 - "4": "集群超限额",  
61 - "6": "没有接口权限",  
62 - "17": "每天流量超限额",  
63 - "18": "QPS超限额",  
64 - "19": "请求总量超限额",  
65 - "100": "无效的access_token参数",  
66 - "110": "Access Token失效",  
67 - "111": " Access token过期",  
68 - "222001": "必要参数未传入",  
69 - "222002": "参数格式错误",  
70 - "222003": "参数格式错误",  
71 - "222004": "参数格式错误",  
72 - "222005": "参数格式错误",  
73 - "222006": "参数格式错误",  
74 - "222007": "参数格式错误",  
75 - "222008": "参数格式错误",  
76 - "222009": "参数格式错误",  
77 - "222010": "参数格式错误",  
78 - "222011": "参数格式错误",  
79 - "222012": "参数格式错误",  
80 - "222013": "参数格式错误",  
81 - "222014": "参数格式错误",  
82 - "222015": "参数格式错误",  
83 - "222016": "参数格式错误",  
84 - "222017": "参数格式错误",  
85 - "222018": "参数格式错误",  
86 - "222019": "参数格式错误",  
87 - "222020": "参数格式错误",  
88 - "222021": "参数格式错误",  
89 - "222022": "身份证号不符合要求,备注:中国大陆身份证号的每一位数字都有其生成规则,不可随意填写。",  
90 - "222023": "参数格式错误",  
91 - "222024": "参数格式错误",  
92 - "222025": "参数格式错误",  
93 - "222026": "参数格式错误",  
94 - "222027": "验证码长度错误(最小值大于最大值)",  
95 - "222028": "参数格式错误",  
96 - "222029": "参数格式错误",  
97 - "222030": "参数格式错误",  
98 - "222039": "参数格式错误",  
99 - "222200": "该接口需使用application/json的格式进行请求",  
100 - "222201": "服务端请求失败",  
101 - "222202": "图片中没有人脸",  
102 - "222203": "无法解析人脸",  
103 - "222204": "从图片的url下载图片失败",  
104 - "222205": "服务端请求失败",  
105 - "222206": "服务端请求失败",  
106 - "222207": "未找到匹配的用户",  
107 - "222208": "图片的数量错误",  
108 - "222209": "face token不存在",  
109 - "222210": "人脸库中用户下的人脸数目超过限制",  
110 - "222300": "人脸图片添加失败",  
111 - "222301": "获取人脸图片失败",  
112 - "222302": "服务端请求失败",  
113 - "222303": "获取人脸图片失败",  
114 - "222152": "人脸属性编辑,target参数错误",  
115 - "222514": "人脸属性编辑v2调用服务失败,请重试",  
116 - "223100": "操作的用户组不存在",  
117 - "223101": "该用户组已存在",  
118 - "223102": "找不到该用户",  
119 - "223103": "找不到该用户",  
120 - "223104": "group_list包含组数量过多",  
121 - "223105": "该人脸已存在",  
122 - "223106": "该人脸不存在",  
123 - "223107": "人脸库中人脸复制时源组与目标组的scene_type不同",  
124 - "223110": "uid_list包含数量过多",  
125 - "223111": "目标用户组不存在",  
126 - "223112": "quality_conf格式不正确",  
127 - "223113": "人脸有被遮挡",  
128 - "223114": "人脸模糊",  
129 - "223115": "人脸光照不好",  
130 - "223116": "人脸不完整",  
131 - "223117": "app_list包含app数量过多",  
132 - "223118": "质量控制项错误",  
133 - "223119": "活体控制项错误",  
134 - "223120": "活体检测未通过",  
135 - "223121": "质量检测未通过 左眼遮挡程度过高",  
136 - "223122": "质量检测未通过 右眼遮挡程度过高",  
137 - "223123": "质量检测未通过 左脸遮挡程度过高",  
138 - "223124": "质量检测未通过 右脸遮挡程度过高",  
139 - "223125": "质量检测未通过 下巴遮挡程度过高",  
140 - "223126": "质量检测未通过 鼻子遮挡程度过高",  
141 - "223127": "质量检测未通过 嘴巴遮挡程度过高",  
142 - "222901": "参数校验初始化失败",  
143 - "222902": "参数校验初始化失败",  
144 - "222903": "参数校验初始化失败",  
145 - "222904": "参数校验初始化失败",  
146 - "222905": "接口初始化失败",  
147 - "222906": "接口初始化失败",  
148 - "222907": "缓存处理失败",  
149 - "222908": "缓存处理失败",  
150 - "222909": "缓存处理失败",  
151 - "222910": "数据存储处理失败",  
152 - "222911": "数据存储处理失败",  
153 - "222912": "数据存储处理失败",  
154 - "222913": "接口初始化失败",  
155 - "222914": "接口初始化失败",  
156 - "222915": "后端服务连接失败",  
157 - "222916": "后端服务连接失败",  
158 - "222304": "图片尺寸太大",  
159 - "222305": "当前版本不支持图片存储",  
160 - "223128": "正在清理该用户组的数据",  
161 - "223136": "该组内存在关联图片,无法新建相同名称组",  
162 - "222361": "公安服务连接失败",  
163 - "222046": "参数格式错误",  
164 - "222101": "参数格式错误",  
165 - "222102": "参数格式错误",  
166 - "222307": "图片非法 鉴黄未通过",  
167 - "222308": "图片非法 含有政治敏感人物",  
168 - "222211": "人脸融合失败 模板图质量不合格",  
169 - "222212": "人脸融合失败",  
170 - "223129": "人脸未面向正前方(人脸的角度信息大于30度)",  
171 - "223130": "spoofing_control参数格式错误",  
172 - "223131": "合成图检测未通过",  
173 - "223201": "请求参数scene_type 格式错误",  
174 - "223202": "识别时请求的scene_type与group设置的scene_type不匹配",  
175 - }  
176 - this.setData({ err_map: map }); 53 + set_err_map:function () {
  54 + var map={
  55 + "2":"服务暂不可用",
  56 + "4":"集群超限额",
  57 + "6":"没有接口权限",
  58 + "17":"每天流量超限额",
  59 + "18":"QPS超限额",
  60 + "19":"请求总量超限额",
  61 + "100":"无效的access_token参数",
  62 + "110":"Access Token失效",
  63 + "111":" Access token过期",
  64 + "222001":"必要参数未传入",
  65 + "222002":"参数格式错误",
  66 + "222003":"参数格式错误",
  67 + "222004":"参数格式错误",
  68 + "222005":"参数格式错误",
  69 + "222006":"参数格式错误",
  70 + "222007":"参数格式错误",
  71 + "222008":"参数格式错误",
  72 + "222009":"参数格式错误",
  73 + "222010":"参数格式错误",
  74 + "222011":"参数格式错误",
  75 + "222012":"参数格式错误",
  76 + "222013":"参数格式错误",
  77 + "222014":"参数格式错误",
  78 + "222015":"参数格式错误",
  79 + "222016":"参数格式错误",
  80 + "222017":"参数格式错误",
  81 + "222018":"参数格式错误",
  82 + "222019":"参数格式错误",
  83 + "222020":"参数格式错误",
  84 + "222021":"参数格式错误",
  85 + "222022":"身份证号不符合要求,备注:中国大陆身份证号的每一位数字都有其生成规则,不可随意填写。",
  86 + "222023":"参数格式错误",
  87 + "222024":"参数格式错误",
  88 + "222025":"参数格式错误",
  89 + "222026":"参数格式错误",
  90 + "222027":"验证码长度错误(最小值大于最大值)",
  91 + "222028":"参数格式错误",
  92 + "222029":"参数格式错误",
  93 + "222030":"参数格式错误",
  94 + "222039":"参数格式错误",
  95 + "222200":"该接口需使用application/json的格式进行请求",
  96 + "222201":"服务端请求失败",
  97 + "222202":"图片中没有人脸",
  98 + "222203":"无法解析人脸",
  99 + "222204":"从图片的url下载图片失败",
  100 + "222205":"服务端请求失败",
  101 + "222206":"服务端请求失败",
  102 + "222207":"未找到匹配的用户",
  103 + "222208":"图片的数量错误",
  104 + "222209":"face token不存在",
  105 + "222210":"人脸库中用户下的人脸数目超过限制",
  106 + "222300":"人脸图片添加失败",
  107 + "222301":"获取人脸图片失败",
  108 + "222302":"服务端请求失败",
  109 + "222303":"获取人脸图片失败",
  110 + "222152":"人脸属性编辑,target参数错误",
  111 + "222514":"人脸属性编辑v2调用服务失败,请重试",
  112 + "223100":"操作的用户组不存在",
  113 + "223101":"该用户组已存在",
  114 + "223102":"找不到该用户",
  115 + "223103":"找不到该用户",
  116 + "223104":"group_list包含组数量过多",
  117 + "223105":"该人脸已存在",
  118 + "223106":"该人脸不存在",
  119 + "223107":"人脸库中人脸复制时源组与目标组的scene_type不同",
  120 + "223110":"uid_list包含数量过多",
  121 + "223111":"目标用户组不存在",
  122 + "223112":"quality_conf格式不正确",
  123 + "223113":"人脸有被遮挡",
  124 + "223114":"人脸模糊",
  125 + "223115":"人脸光照不好",
  126 + "223116":"人脸不完整",
  127 + "223117":"app_list包含app数量过多",
  128 + "223118":"质量控制项错误",
  129 + "223119":"活体控制项错误",
  130 + "223120":"活体检测未通过",
  131 + "223121":"质量检测未通过 左眼遮挡程度过高",
  132 + "223122":"质量检测未通过 右眼遮挡程度过高",
  133 + "223123":"质量检测未通过 左脸遮挡程度过高",
  134 + "223124":"质量检测未通过 右脸遮挡程度过高",
  135 + "223125":"质量检测未通过 下巴遮挡程度过高",
  136 + "223126":"质量检测未通过 鼻子遮挡程度过高",
  137 + "223127":"质量检测未通过 嘴巴遮挡程度过高",
  138 + "222901":"参数校验初始化失败",
  139 + "222902":"参数校验初始化失败",
  140 + "222903":"参数校验初始化失败",
  141 + "222904":"参数校验初始化失败",
  142 + "222905":"接口初始化失败",
  143 + "222906":"接口初始化失败",
  144 + "222907":"缓存处理失败",
  145 + "222908":"缓存处理失败",
  146 + "222909":"缓存处理失败",
  147 + "222910":"数据存储处理失败",
  148 + "222911":"数据存储处理失败",
  149 + "222912":"数据存储处理失败",
  150 + "222913":"接口初始化失败",
  151 + "222914":"接口初始化失败",
  152 + "222915":"后端服务连接失败",
  153 + "222916":"后端服务连接失败",
  154 + "222304":"图片尺寸太大",
  155 + "222305":"当前版本不支持图片存储",
  156 + "223128":"正在清理该用户组的数据",
  157 + "223136":"该组内存在关联图片,无法新建相同名称组",
  158 + "222361":"公安服务连接失败",
  159 + "222046":"参数格式错误",
  160 + "222101":"参数格式错误",
  161 + "222102":"参数格式错误",
  162 + "222307":"图片非法 鉴黄未通过",
  163 + "222308":"图片非法 含有政治敏感人物",
  164 + "222211":"人脸融合失败 模板图质量不合格",
  165 + "222212":"人脸融合失败",
  166 + "223129":"人脸未面向正前方(人脸的角度信息大于30度)",
  167 + "223130":"spoofing_control参数格式错误",
  168 + "223131":"合成图检测未通过",
  169 + "223201":"请求参数scene_type 格式错误",
  170 + "223202":"识别时请求的scene_type与group设置的scene_type不匹配",
  171 + }
  172 + this.setData({err_map:map});
177 }, 173 },
178 174
179 /** 175 /**
180 * 生命周期函数--监听页面显示 176 * 生命周期函数--监听页面显示
181 */ 177 */
182 - onShow: function () { }, 178 + onShow: function (){ },
183 179
184 /** 180 /**
185 * 生命周期函数--监听页面隐藏 181 * 生命周期函数--监听页面隐藏
@@ -203,318 +199,159 @@ Page({ @@ -203,318 +199,159 @@ Page({
203 199
204 }, 200 },
205 201
206 - mt_check() {  
207 - let img_info = getApp().globalData.skin_img_info;  
208 - var plugin = requirePlugin('mtSkinSdk');  
209 - let th = this;  
210 - plugin.facePoseCorrect({  
211 - path: img_info['path'],  
212 - size: img_info['size'],  
213 - success(res) {  
214 - console.log('=========姿态校正 成功==========')  
215 - console.log('姿态校正结果', res)  
216 - let analyse_info = res.data;  
217 - //检查闭眼情况  
218 - if (analyse_info.analyse_info) {  
219 - //检查睁眼闭眼  
220 - let { left, right } = analyse_info.analyse_info;  
221 - if (left !== 2 || right !== 2) {  
222 - var msg = "未闭眼拍照";  
223 - th.go_error(msg);  
224 - return false;  
225 - }  
226 - }  
227 - //检查佩戴情况  
228 - if (analyse_info.faceGlasses) {  
229 - let { none, normal, sunglasses } = analyse_info.faceGlasses;  
230 - if (normal > 0.8 || sunglasses > 0.8 || none < 0.1) {  
231 - var msg = "有佩戴眼镜";  
232 - th.go_error(msg);  
233 - return false;  
234 - }  
235 - }  
236 - //检查框里情况  
237 - if (analyse_info.faceOutDetect.outBound == 1) {  
238 - var msg = "未在取景框内";  
239 - th.go_error(msg);  
240 - return false;  
241 - }  
242 - // if (analyse_info.facePoseEuler) {  
243 - // let { pitch, roll, yaw } = analyse_info.facePoseEuler;  
244 - // if (normal > 0.8 || sunglasses > 0.8 || none < 0.1) {  
245 - // var msg = "有佩戴眼镜";  
246 - // th.go_error(msg);  
247 - // return false;  
248 - // }  
249 - // }  
250 - //检查环境情况  
251 - if (analyse_info.faceQuality) {  
252 - let { bright, blur, compression } = analyse_info.faceQuality;  
253 - if (bright > 80) {  
254 - var msg = "亮度过亮";  
255 - th.go_error(msg);  
256 - return false;  
257 - }  
258 - if (bright < 20 || blur < 20) {  
259 - var msg = "亮度过暗或图片过于模糊";  
260 - th.go_error(msg);  
261 - return false;  
262 - }  
263 - }  
264 - //检查距离  
265 - if (analyse_info.faceRatio < 0.2) {  
266 - var msg = "距离过远";  
267 - th.go_error(msg);  
268 - return false;  
269 - }  
270 - if (analyse_info.faceRatio > 0.8) {  
271 - var msg = "距离过近";  
272 - th.go_error(msg);  
273 - return false;  
274 - }  
275 - //检查遮挡物  
276 - if (analyse_info.faceVisibility) {  
277 - var msg = "";  
278 - let fail = Object.keys(analyse_info.faceVisibility).filter(key => {  
279 - return analyse_info.faceVisibility[key] <= 80;  
280 - })  
281 - console.log('fail', fail);  
282 - switch (fail[0]) {  
283 - case "jaw":  
284 - msg = "下巴有遮挡";  
285 - break;  
286 - case "leftcheek":  
287 - msg = "左脸有遮挡";  
288 - break;  
289 - case "lefteye":  
290 - msg = "左眼有遮挡";  
291 - break;  
292 - case "lefteyebrow":  
293 - msg = "左眉毛有遮挡";  
294 - break;  
295 - case "mouse":  
296 - msg = "嘴巴有遮挡";  
297 - break;  
298 - case "nose":  
299 - msg = "鼻子有遮挡";  
300 - break;  
301 - case "rightcheek":  
302 - msg = "右脸有遮挡";  
303 - break;  
304 - case "righteye":  
305 - msg = "右眼有遮挡";  
306 - break;  
307 - case "rightyebrow":  
308 - msg = "右眉毛有遮挡";  
309 - break;  
310 - }  
311 - if (msg) {  
312 - th.go_error(msg);  
313 - return false;  
314 - }  
315 - }  
316 - th.analyse_by_mtapi(img_info);  
317 - },  
318 - fail(err) {  
319 - th.go_error('识别有误,请重试');  
320 - return false;  
321 - }  
322 - })  
323 -  
324 - },  
325 -  
326 - analyse_by_mtapi(img_info) {  
327 - // let img_info = getApp().globalData.skin_img_info;  
328 - let th = this;  
329 - var plugin = requirePlugin('mtSkinSdk')  
330 - plugin.detectImage({  
331 - path: img_info['path'],  
332 - size: img_info['size'],  
333 - success(res) {  
334 - console.log('=========用户传图片链接获取检测结果 成功==========')  
335 - console.log('检测结果', res);  
336 - let req_data = {  
337 - store_id: setting.stoid,  
338 - user_id: getApp().globalData.user_id,  
339 - img: getApp().globalData.face_img,  
340 - sourceimg: getApp().globalData.face_SourceImg,  
341 - addtime: ut.gettimestamp(),  
342 - resultjson: JSON.stringify(res.data.data),  
343 - detectjson: JSON.stringify(th.data.check_data)  
344 - }  
345 - //要保存一下分析的结果  
346 - th.json_post("/api/weshop/face/storeSkinface/save", req_data, function (res) {  
347 - if (res.data.code == 0) {  
348 - let url = "/packageD/pages/AI-test-skin/success_result/success_result?id=" + res.data.data.id; //跳到分析页  
349 - wx.redirectTo({  
350 - url: url  
351 - })  
352 - } else {  
353 - getApp().showWarning("保存失败");  
354 - }  
355 - })  
356 - },  
357 - fail(err) {  
358 - console.error('=========用户传图片链接获取检测结果 失败==========')  
359 - console.log('error', err)  
360 - }  
361 - })  
362 - },  
363 -  
364 //检查图片有没有OK 202 //检查图片有没有OK
365 - img_check: function (func) {  
366 - var th = this;  
367 - var data = { 203 + img_check:function (func) {
  204 + var th=this;
  205 + var data={
368 "appid": "25521854", 206 "appid": "25521854",
369 "image": getApp().globalData.face_SourceImg, 207 "image": getApp().globalData.face_SourceImg,
370 "face_field": "age,expression,face_shape,gender,glasses,landmark,landmark150,quality,eye_status,emotion,face_type,mask,spoofing", 208 "face_field": "age,expression,face_shape,gender,glasses,landmark,landmark150,quality,eye_status,emotion,face_type,mask,spoofing",
371 - "image_type": "URL",  
372 - "store_id":setting.stoid 209 + "image_type": "URL"
373 } 210 }
374 //开始调用接口,进行对图片进行判断是否符合标准 211 //开始调用接口,进行对图片进行判断是否符合标准
375 - this.json_post("/api/weshop/baidubce/face/skindetect", data, function (res) {  
376 - if (res.data.code == 0) { 212 + this.json_post("/api/weshop/baidubce/face/skindetect",data,function (res) {
  213 + if(res.data.code==0){
377 //检查的字段存储 214 //检查的字段存储
378 - var check_data = th.data.check_data = res.data.data;  
379 - check_data = check_data.face_list[0]; 215 + var check_data=th.data.check_data=res.data.data;
  216 + check_data=check_data.face_list[0];
380 console.log(check_data); 217 console.log(check_data);
381 //检查睁眼闭眼 218 //检查睁眼闭眼
382 - var eye_status = check_data.eye_status;  
383 - if (eye_status.left_eye > 0.1 || eye_status.right_eye > 0.1) {  
384 - var msg = "未闭眼拍照"; 219 + var eye_status=check_data.eye_status;
  220 + if(eye_status.left_eye>0.1 || eye_status.right_eye>0.1) {
  221 + var msg="未闭眼拍照";
385 th.go_error(msg); 222 th.go_error(msg);
386 return false; 223 return false;
387 } 224 }
388 //检查是不是有带眼镜 225 //检查是不是有带眼镜
389 - if (check_data.glasses.type != 'none') {  
390 - var msg = "有佩戴眼镜"; 226 + if(check_data.glasses.type!='none'){
  227 + var msg="有佩戴眼镜";
391 th.go_error(msg); 228 th.go_error(msg);
392 return false; 229 return false;
393 } 230 }
394 //检查头部的角度 231 //检查头部的角度
395 - var angle = check_data.angle;  
396 - if (Math.abs(angle.Pitch) > 20) {  
397 - var msg = "头部的俯仰角度过大"; 232 + var angle=check_data.angle;
  233 + if(Math.abs(angle.Pitch)>20) {
  234 + var msg="头部的俯仰角度过大";
398 th.go_error(msg); 235 th.go_error(msg);
399 return false; 236 return false;
400 } 237 }
401 - if (Math.abs(angle.Roll) > 20) {  
402 - var msg = "头部的平面角度过大"; 238 + if(Math.abs(angle.Roll)>20) {
  239 + var msg="头部的平面角度过大";
403 th.go_error(msg); 240 th.go_error(msg);
404 return false; 241 return false;
405 } 242 }
406 - if (Math.abs(angle.Yaw) > 20) {  
407 - var msg = "头部的左右角度过大"; 243 + if(Math.abs(angle.Yaw)>20) {
  244 + var msg="头部的左右角度过大";
408 th.go_error(msg); 245 th.go_error(msg);
409 return false; 246 return false;
410 } 247 }
411 - var quality = check_data.quality;  
412 - if (quality.blur > 0.7) {  
413 - var msg = "图片模糊"; 248 + var quality=check_data.quality;
  249 + if(quality.blur>0.7){
  250 + var msg="图片模糊";
414 th.go_error(msg); 251 th.go_error(msg);
415 return false; 252 return false;
416 } 253 }
417 //开始检查遮挡 254 //开始检查遮挡
418 - var occlusion = check_data.quality.occlusion;  
419 - if (occlusion.left_eye > 0.6) {  
420 - var msg = "左眼被遮挡"; 255 + var occlusion=check_data.quality.occlusion;
  256 + if(occlusion.left_eye >0.6){
  257 + var msg="左眼被遮挡";
421 th.go_error(msg); 258 th.go_error(msg);
422 return false; 259 return false;
423 } 260 }
424 - if (occlusion.right_eye > 0.6) {  
425 - var msg = "右眼被遮挡"; 261 + if(occlusion.right_eye>0.6){
  262 + var msg="右眼被遮挡";
426 th.go_error(msg); 263 th.go_error(msg);
427 return false; 264 return false;
428 } 265 }
429 - if (occlusion.nose > 0.7) {  
430 - var msg = "鼻子被遮挡"; 266 + if(occlusion.nose>0.7){
  267 + var msg="鼻子被遮挡";
431 th.go_error(msg); 268 th.go_error(msg);
432 return false; 269 return false;
433 } 270 }
434 - if (occlusion.mouth > 0.7) {  
435 - var msg = "嘴巴被遮挡"; 271 + if(occlusion.mouth>0.7){
  272 + var msg="嘴巴被遮挡";
436 th.go_error(msg); 273 th.go_error(msg);
437 return false; 274 return false;
438 } 275 }
439 - if (occlusion.left_cheek > 0.8) {  
440 - var msg = "左脸颊被遮挡"; 276 + if(occlusion.left_cheek >0.8){
  277 + var msg="左脸颊被遮挡";
441 th.go_error(msg); 278 th.go_error(msg);
442 return false; 279 return false;
443 } 280 }
444 - if (occlusion.right_cheek > 0.8) {  
445 - var msg = "右脸颊被遮挡"; 281 + if(occlusion.right_cheek >0.8){
  282 + var msg="右脸颊被遮挡";
446 th.go_error(msg); 283 th.go_error(msg);
447 return false; 284 return false;
448 } 285 }
449 - if (occlusion.chin_contour > 0.6) {  
450 - var msg = "下巴颊被遮挡"; 286 + if(occlusion.chin_contour >0.6){
  287 + var msg="下巴颊被遮挡";
451 th.go_error(msg); 288 th.go_error(msg);
452 return false; 289 return false;
453 } 290 }
454 - if (quality.illumination < 40) {  
455 - var msg = "图像光照不足"; 291 + if(quality.illumination<40){
  292 + var msg="图像光照不足";
456 th.go_error(msg); 293 th.go_error(msg);
457 return false; 294 return false;
458 } 295 }
459 - if (quality.completeness = 0) {  
460 - var msg = "人脸未显示完整"; 296 + if(quality.completeness=0){
  297 + var msg="人脸未显示完整";
461 th.go_error(msg); 298 th.go_error(msg);
462 return false; 299 return false;
463 } 300 }
464 //-- 开始调用分析的接口 -- 301 //-- 开始调用分析的接口 --
465 - var face_token = check_data.face_token;  
466 - var data = { 302 + var face_token=check_data.face_token;
  303 + var data={
467 "image": face_token, 304 "image": face_token,
468 "face_field": "color,smooth,acnespotmole,wrinkle,eyesattr,blackheadpore,skinface,skinquality", 305 "face_field": "color,smooth,acnespotmole,wrinkle,eyesattr,blackheadpore,skinface,skinquality",
469 "image_type": "FACE_TOKEN" 306 "image_type": "FACE_TOKEN"
470 } 307 }
471 th.analysis_img(data); 308 th.analysis_img(data);
472 - } else {  
473 - var msg = th.data.err_map[res.data.code + ""]; 309 + }else{
  310 + var msg=th.data.err_map[res.data.code+""];
474 th.go_error(msg); 311 th.go_error(msg);
475 } 312 }
476 }) 313 })
477 }, 314 },
478 - 315 +
479 //跳转到错误页面 316 //跳转到错误页面
480 - go_error: function (msg) {  
481 - let url = "/packageD/pages/AI-test-skin/fail_result/fail_result?msg=" + msg; //跳到分析页 317 + go_error:function (msg) {
  318 + let url = "/packageD/pages/AI-test-skin/fail_result/fail_result?msg="+msg; //跳到分析页
482 wx.redirectTo({ 319 wx.redirectTo({
483 url: url 320 url: url
484 }); 321 });
485 }, 322 },
486 323
487 - analysis_img: function (data) {  
488 - var th = this; 324 + analysis_img:function (data) {
  325 + var th=this;
489 //开始调用接口,进行分析 326 //开始调用接口,进行分析
490 - this.json_post("/api/weshop/baidubce/face/skinAnalyze", data, function (res) {  
491 - if (res.data.code == 0) {  
492 - getApp().globalData.face_result = res.data.data;  
493 - var req_data = {  
494 - store_id: setting.stoid,  
495 - user_id: getApp().globalData.user_id,  
496 - img: getApp().globalData.face_img,  
497 - sourceimg: getApp().globalData.face_SourceImg,  
498 - addtime: ut.gettimestamp(),  
499 - resultjson: JSON.stringify(res.data.data),  
500 - detectjson: JSON.stringify(th.data.check_data) 327 + this.json_post("/api/weshop/baidubce/face/skinAnalyze",data,function (res) {
  328 + if(res.data.code==0){
  329 + getApp().globalData.face_result=res.data.data;
  330 + var req_data={
  331 + store_id:setting.stoid,
  332 + user_id:getApp().globalData.user_id,
  333 + img:getApp().globalData.face_img,
  334 + sourceimg:getApp().globalData.face_SourceImg,
  335 + addtime:ut.gettimestamp(),
  336 + resultjson:JSON.stringify(res.data.data),
  337 + detectjson:JSON.stringify(th.data.check_data)
501 } 338 }
502 //要保存一下分析的结果 339 //要保存一下分析的结果
503 - th.json_post("/api/weshop/face/storeSkinface/save", req_data, function (res) {  
504 - if (res.data.code == 0) {  
505 - let url = "/packageD/pages/AI-test-skin/success_result/success_result?id=" + res.data.data.id; //跳到分析页 340 + th.json_post("/api/weshop/face/storeSkinface/save",req_data,function (res) {
  341 + if(res.data.code==0){
  342 + let url = "/packageD/pages/AI-test-skin/success_result/success_result?id="+res.data.data.id; //跳到分析页
506 wx.redirectTo({ 343 wx.redirectTo({
507 url: url 344 url: url
508 }) 345 })
509 - } else { 346 + }else{
510 getApp().showWarning("保存失败"); 347 getApp().showWarning("保存失败");
511 } 348 }
512 }) 349 })
513 - } else {  
514 - var msg = th.data.err_map[res.data.code + ""];  
515 - let url = "/packageD/pages/AI-test-skin/fail_result/fail_result?msg=" + msg; //跳到分析页 350 + }else{
  351 + var msg=th.data.err_map[res.data.code+""];
  352 + let url = "/packageD/pages/AI-test-skin/fail_result/fail_result?msg="+msg; //跳到分析页
516 wx.redirectTo({ 353 wx.redirectTo({
517 - url: url 354 + url: url
518 }) 355 })
519 } 356 }
520 }) 357 })
@@ -526,10 +363,10 @@ Page({ @@ -526,10 +363,10 @@ Page({
526 * @param {Object} succ //成功的回调 363 * @param {Object} succ //成功的回调
527 * @param {Object} fail //失败的回调 364 * @param {Object} fail //失败的回调
528 */ 365 */
529 - json_post: function (url, data, succ, fail, mathod) {  
530 - var Mathod = "POST"; 366 + json_post:function(url,data,succ,fail,mathod){
  367 + var Mathod="POST";
531 if (mathod) Mathod = mathod; 368 if (mathod) Mathod = mathod;
532 - if (url.indexOf("http") == -1) url = getApp().globalData.setting.url + url; 369 + if(url.indexOf("http")==-1) url=getApp().globalData.setting.url +url;
533 var str = JSON.stringify(data); 370 var str = JSON.stringify(data);
534 wx.request({ 371 wx.request({
535 url: url, 372 url: url,
@@ -538,8 +375,8 @@ Page({ @@ -538,8 +375,8 @@ Page({
538 header: { 375 header: {
539 'content-type': 'application/json' 376 'content-type': 'application/json'
540 },// 设置请求的 header 377 },// 设置请求的 header
541 - success: function (res) { succ(res); },  
542 - fail: function (res) { fail(res); } 378 + success: function (res) {succ(res); },
  379 + fail:function(res){fail(res);}
543 }) 380 })
544 }, 381 },
545 382