/* * @Author: abson * @Date: 2022-02-15 10:01:57 * @LastEditTime: 2022-03-02 11:44:11 * @LastEditors: Please set LastEditors * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AEet urkl * @FilePath: \MShopWeApp\packageB\pages\AI-test-skin\shoot_notice\shoot_notice.js */ // packageB/pages/AI-test-skin/shoot_notice/shoot_notice.js const app = getApp(); const request = app.request; const os = app.globalData; const setting = os.setting; const ut = require('../../../../utils/util'); Page({ /** * 页面的初始数据 */ data: { iurl: setting.imghost, notice_show: "", skin_type: 0, cWidth: 0, cHeight: 0, ce_user_id: 0 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var ce_user_id=options.ce_user_id; if(ce_user_id) this.data.ce_user_id=ce_user_id; }, /** * 生命周期函数--监听页面显示 */ onShow: function () { getApp().check_can_share(); let th = this; setTimeout(() => { th.setData({ notice_show: 'none', }) }, 3000) }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { getApp().globalData.no_clear=1 }, //从相册中选择图片 show_pai_pop: function () { let th = this; getApp().globalData.no_clear=1; //选择和拍照一张图片 wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success(res) { let imgArr = res.tempFilePaths; // if (th.data.skin_type) { imgArr = res.tempFiles; } console.log(imgArr); getApp().globalData.skin_img_info = imgArr[0]; let url = "/packageD/pages/AI-test-skin/select_photo/select_photo"; if(th.data.ce_user_id) url+="?ce_user_id="+th.data.ce_user_id; app.goto(url); } }) }, //选择图片 takePhoto() { var that = this; this.check_num(function () { getApp().globalData.no_clear=1; that.setData({selecting:1}); wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album', 'camera'], success(res) { var tempFilePaths = res.tempFilePaths console.log(tempFilePaths); console.log(res.tempFiles[0].size / 1024 + 'kb'); var size1 =res.tempFiles[0].size; var size = res.tempFiles[0].size / 1024; //kb单位 // tempFilePath可以作为img标签的src属性显示图片 var img = tempFilePaths[0]; that.setData({ imagesrc: img, }) that.imgToMin(img, size,size1); //获取图片后压缩 }, fail(err) { that.setData({selecting:0}) console.log(err); } }) }) }, //图片转码64 base64(url, type) { var that = this; return new Promise((resolve, reject) => { wx.getFileSystemManager().readFile({ filePath: url, //选择图片返回的相对路径 encoding: 'base64', //编码格式 success: res => { resolve('data:image/' + type.toLocaleLowerCase() + ';base64,' + res.data) // console.log(res.data); // that.doDiscernment(res.data);//提交后台 }, fail: res => reject(res.errMsg) }) }) }, //缩放图片 imgToMin(img, size,size1) { var that = this; //size小于100kb 时 直接转码识别 if (size < 1024) { that.setData({selecting:0}) getApp().globalData.skin_img_info = { path:img, size, } let url = "/packageD/pages/AI-test-skin/select_photo/select_photo"; if(this.data.ce_user_id){ url+="?ce_user_id="+this.data.ce_user_id; } app.goto(url); // that.base64(img,"jpg"); return; } wx.showLoading({ title:'处理中', mask: true }); //先获取图片 然后根据长宽 缩小 之后获取图片 wx.getImageInfo({ src: img, success(res) { var ratio = size / 1024; size1 = size1 / ratio; var canvasWidth = res.width //图片原始长宽 var canvasHeight = res.height //while (canvasWidth > 375 || canvasHeight > 520){// 保证宽高在400以内 canvasWidth = Math.trunc(canvasWidth / ratio) canvasHeight = Math.trunc(canvasHeight / ratio) //ratio++; //} that.setData({ canvasWidth: canvasWidth, canvasHeight: canvasHeight }) console.log(canvasWidth) console.log(canvasHeight) //绘制图片 var ctx = wx.createCanvasContext('attendCanvasId') ctx.drawImage(img, 0, 0, canvasWidth, canvasHeight) ctx.draw(false, setTimeout(function () { wx.canvasToTempFilePath({ canvasId: 'attendCanvasId', width: canvasWidth, height: canvasHeight, destWidth: canvasWidth, destHeight: canvasHeight, fileType: 'jpg', success: function (res) { wx.hideLoading(); that.setData({ canvasImgUrl: res.tempFilePath }); getApp().globalData.skin_img_info = { path:res.tempFilePath, size:size1 }; let url = "/packageD/pages/AI-test-skin/select_photo/select_photo"; if(that.data.ce_user_id) url+="?ce_user_id="+that.data.ce_user_id; app.goto(url); }, fail: function (res) { wx.hideLoading(); that.setData({selecting:0}) wx.showToast({ title: '识别图片失败', image: '../../utils/img/wrong.png', duration: 2000 }) that.setData({ title: "识别失败", }) } }, this) //要填写this对象,表示canvas这个对象 }, 1000)) //留一定的时间绘制canvas 否则会报错fail canvas is empty }, fail: function (res) { wx.hideLoading(); that.setData({selecting:0}) wx.showToast({ title: '识别图片失败', image: '../../utils/img/wrong.png', duration: 2000 }) that.setData({ title: "识别失败", }) }, }) }, check_num:function (func) { //判断右没有开AI测肤 getApp().promiseGet("/api/weshop/wx/weappSkin/get/"+setting.stoid,{}).then(rs=>{ if(rs.data.code!=0 || !rs.data.data){ wx.showToast({ title: "未开通测肤功能,请联系商家", icon: 'none', duration: 3000 }) }else if(!rs.data.data.skin_num || rs.data.data.skin_num<=0){ wx.showToast({ title: "测肤功能的使用次数已经达到上限,请联系商家", icon: 'none', duration: 3000 }) }else{ var rdata={ store_id:setting.stoid, user_id:getApp().globalData.user_id } this.json_post("/api/weshop/baidubce/face/skinvip",rdata,res=>{ if(res.data.code==0){ func(); }else{ wx.showToast({ title: res.data.msg, icon: 'none', duration: 3000 }) } }) } }) }, /** * @param {Object} url //url地址 * @param {Object} data //data入参 * @param {Object} succ //成功的回调 * @param {Object} fail //失败的回调 */ json_post: function (url, data, succ, fail, mathod) { var Mathod = "POST"; if (mathod) Mathod = mathod; if (url.indexOf("http") == -1) url = getApp().globalData.setting.url + url; var str = JSON.stringify(data); wx.request({ url: url, data: str, method: Mathod, header: { 'content-type': 'application/json' },// 设置请求的 header success: function (res) { succ(res); }, fail: function (res) { fail(res); } }) }, })