shoot_notice.js 7.33 KB
/*
 * @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,
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        let th = this;
        setTimeout(() => {
            th.setData({
                notice_show: 'none',
            })
        }, 3000)
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    },

    //从相册中选择图片
    show_pai_pop: function () {
        let 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;
                }
                console.log(imgArr);
                getApp().globalData.skin_img_info = imgArr[0];
                let url = "/packageD/pages/AI-test-skin/select_photo/select_photo";
                app.goto(url);
            }
        })

    },

    //选择图片
    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);
            }
        })
    },
    //图片转码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) {
            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) {
                console.log(res.width)
                console.log(res.height)
                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) {
                            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: "识别失败",
                })
            },
        })
    },
})