|
|
- // 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 () {
-
- }
- })
|