// pagesA/selectFace/selectFace.js Page({ /** * 页面的初始数据 */ data: { cameraStatus:false, imgSrc:'', screenW: '', width: '', height: '', distance: '', old_width: '', old_height: '', cut_: '', x: 0, y: 0, crop_pic:'' }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { const _this = this wx.getSetting({ success: res => { if (res.authSetting['scope.camera']) { _this.setData({ cameraStatus: true }) } else { // 用户还没有授权,向用户发起授权请求 wx.authorize({ scope: 'scope.camera', success() { // 用户同意授权 _this.setData({ cameraStatus: true }) }, fail() { // 用户不同意授权 _this.openSetting().then(res => { _this.setData({ cameraStatus: true }) }) } }) } }, fail: res => { console.log('获取用户授权信息失败') } }) wx.getSystemInfo({ success: res => { const screenH = res.screenHeight, screenW = res.screenWidth, cut_ = screenW - 4; let that = this; that.setData({ screenW: screenW, cut_: cut_ }) }, }) }, // 打开授权设置界面 openSetting() { const _this = this let promise = new Promise((resolve, reject) => { wx.showModal({ title: '授权', content: '请先授权获取摄像头权限', success(res) { if (res.confirm) { wx.openSetting({ success(res) { if (res.authSetting['scope.camera']) { // 用户打开了授权开关 resolve(true) } else { // 用户没有打开授权开关, 继续打开设置页面 _this.openSetting().then(res => { resolve(true) }) } }, fail(res) { console.log(res) } }) } else if (res.cancel) { _this.openSetting().then(res => { resolve(true) }) } } }) }) return promise; }, // 拍照 takePhoto() { var that=this, width = that.data.screenW, height = that.data.screenW; wx.chooseImage({ count:1, sizeType: ['original', 'compressed'], sourceType: ['album', 'camera'], success:function(res){ const tempFilePaths = res.tempFilePaths[0]; wx.getImageInfo({ src: tempFilePaths, success: function(msg) { let img_w = msg.width, img_h = msg.height, scale = img_w / img_h //横向图片,宽不变 //横向图片,高变成固定,宽度自适应 if (scale > 1) { that.setData({ width: scale * width, height: height, old_width: scale * width, old_height: height, imgSrc: tempFilePaths }) } else { //纵向图片,短边是宽,宽变成系统固定,高自适应 that.setData({ width: width, height: height / scale, old_width: width, old_height: height / scale, imgSrc: tempFilePaths }) } } }) }, fail:function(error){ console.error("调用本地相册文件时出错") console.warn(error) }, complete:function(back){ console.log(back) } }) }, start: function(res) { let that = this; if (res.touches.length == 2) { let _x = res.touches[1].pageX - res.touches[0].pageX, _y = res.touches[1].pageY - res.touches[0].pageY, distance = Math.sqrt(Math.pow(_x, 2) + Math.pow(_y, 2)); that.setData({ distance: distance }) } }, move: function(res) { let that = this; console.log(res) if (res.touches.length == 2) { let _x = res.touches[1].pageX - res.touches[0].pageX, _y = res.touches[1].pageY - res.touches[0].pageY, old_width = that.data.old_width, old_height = that.data.old_height, newdistance = Math.sqrt(Math.pow(_x, 2) + Math.pow(_y, 2)), width = that.data.width, height = that.data.height, distance = that.data.distance, end_distance = newdistance - distance, pic_scale = 1 + end_distance * 0.001; that.setData({ width: width * pic_scale, height: height * pic_scale }) let max = width / old_width; if (max > 2) { that.setData({ width: old_width * 2, height: old_height * 2 }) } else if (max < 1) { that.setData({ width: old_width, height: old_height }) } } }, scroll: function(e) { console.log('TOP:' + e.detail.scrollTop + 'Left:' + e.detail.scrollLeft) let x = e.detail.scrollLeft, y = e.detail.scrollTop, that = this; that.setData({ x: x, y: y }) }, crop: function() { let that = this, img = that.data.imgSrc, width = that.data.width, height = that.data.height, crop = that.data.screenW, x = that.data.x, y = that.data.y; wx.showToast({ title: 'loading...', icon: 'loading', duration: 1000 }) const canvas = wx.createCanvasContext('canvas'); canvas.drawImage(img, 0, 0, width, height) canvas.draw(setTimeout(() => { wx.canvasToTempFilePath({ x: x, y: y, width: crop, height: crop, canvasId: 'canvas', success: suc => { console.log(suc.tempFilePath) that.setData({ crop_pic: suc.tempFilePath }) }, fail: err => { console.log('err:' + err) } }, this) }, 1000)) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })