// packageB/pages/AI-test-skin/select_photo/select_photo.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, gl_skin_img: null, skin_type: 0, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var img = getApp().globalData.skin_img_info; this.setData({ gl_skin_img: img }) }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { }, //-- 完成选择 -- ok_select: function () { const th = this; let filePath = th.data.gl_skin_img['path']; console.log('filePath', filePath); // if (th.data.skin_type) { // filePath = th.data.gl_skin_img['path']; // } app.request.uploadFile("/api/weshop/baidubce/face/uploadImg?uploadPath=faceimg&storeId=" + setting.stoid, { filePath: th.data.gl_skin_img['path'], name: "file", success: function (e) { if (e.data.code == 0) { getApp().globalData.face_img = e.data.data.img; getApp().globalData.face_SourceImg = e.data.data.SourceImg; let url = "/packageD/pages/AI-test-skin/analyse/analyse"; //跳到分析页 app.goto(url); } else { wx.showToast({ title: e.data.msg, icon: 'none', duration: 2000 }); }; } }); }, //-- 重新从相册中选择图片 -- show_pai_pop: function () { var th = this; //选择和拍照一张图片 wx.chooseImage({ count: 1, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success(res) { let imgArr = res.tempFilePaths; if (th.data.skin_type) { imgArr = res.tempFiles; } getApp().globalData.skin_img_info = imgArr[0]; th.setData({ gl_skin_img: imgArr[0] }) } }) }, //选择图片 takePhoto() { var that = this; 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) { console.log(err); } }) }, //缩放图片 imgToMin(img, size, size1) { var that = this; //size小于100kb 时 直接转码识别 if (size < 1024) { getApp().globalData.skin_img_info = { path:img, size, } let url = "/packageD/pages/AI-test-skin/select_photo/select_photo"; app.goto(url); // that.base64(img,"jpg"); return; } //先获取图片 然后根据长宽 缩小 之后获取图片 wx.getImageInfo({ src: img, success(res) { var ratio = Math.trunc(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) { console.log(res.tempFilePath)//最终图片路径 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"; app.goto(url); }, fail: function (res) { console.log("缩放图片失败"); console.log(res.errMsg) wx.hideLoading(); 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) { console.log("获取图片失败"); console.log(res.errMsg) wx.hideLoading(); wx.showToast({ title: '识别图片失败', image: '../../utils/img/wrong.png', duration: 2000 }) that.setData({ title: "识别失败", }) }, }) }, })