import { urlPrefix, ossAK, ossHost } from '../../config/index'; import Toast from 'tdesign-miniprogram/toast/index'; var sMD5 = require('../../utils/spark-md5.js'); Page({ /** * 页面的初始数据 */ data: { frontUrl: "", afterUrl: "", left: '86', styleList: [], styleSelectIndex: 0, example_source: '', example_thumb: '', input_img_count: 0, generate_img_count: 0, model_id: 0, prompt_id: 0, jd_count: 1, model_name: '', style: 'border: 2rpx solid rgba(220,220,220,1);border-radius: 12rpx;', gridConfig: { column: 1, width: 760, height: 90, }, uploadStatus: true, imageStatus: false, generateStatus: false, thumb_image: '', thumb_list: [], memoList: [], gText: true, gLoading: false, promptList: [], cWidth: 0, cHeight: 0, historyImgSelectIndex: -1, historyImgList: [] }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { this.loadStyleList(); this.loadHistoryList(); }, //获取风格列表 loadStyleList() { let that = this; wx.request({ url: urlPrefix + '/QingLong/HuiYa/wxGetConvertChildModel', method: "POST", header: { 'content-type': 'application/x-www-form-urlencoded' }, data: { token: wx.getStorageSync('token') }, success(res) { if (res.data.token) { wx.setStorageSync('token', res.data.token); } if (res.data.success) { that.setData({ styleList: res.data.data, afterUrl: res.data.data[0].view_before_img_url, frontUrl: res.data.data[0].view_after_img_url, prompt_id: res.data.data[0].prompt_id }); that.getStyleInfo(); } } }); }, //获取历史相册 loadHistoryList() { let that = this; wx.request({ url: urlPrefix + '/QingLong/HuiYa/wxUserImgHistory', method: "POST", header: { 'content-type': 'application/x-www-form-urlencoded' }, data: { token: wx.getStorageSync('token'), page: 1, limit: 6 }, success(res) { if (res.data.token) { wx.setStorageSync('token', res.data.token); } that.setData({ historyImgList: res.data.data }); } }); }, //获取风格的信息 getStyleInfo() { let that = this; wx.request({ url: urlPrefix + '/QingLong/HuiYa/wxGetModelPrompt', method: "POST", header: { 'content-type': 'application/x-www-form-urlencoded' }, data: { token: wx.getStorageSync('token'), model_id: 49, prompt_id: this.data.prompt_id }, success(res) { if (res.data.token) { wx.setStorageSync('token', res.data.token); } that.setData({ jd_count: res.data.record.jd_count, input_img_count: res.data.record.input_img_count }); } }); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, //上传图片 uploadAddHandle(e) { let that = this; let _file = e.detail.files[0]; let _fileUrl = _file.url; console.log(_fileUrl) let fileExtension = _file.name.split('.').pop(); let fileName = this.getGuid() + "." + fileExtension; let key = "Images/Upload/" + fileName; if (fileExtension == 'png' || fileExtension == 'jpg' || fileExtension == 'jpeg') { wx.getImageInfo({ src: _fileUrl, success(res) { let cW = res.width; let cH = res.height; let cWidth = cW; let cHeight = cH; //如果宽或高小于384为不允许 if (cW < 384 || cH < 384) { Toast({ context: that, selector: '#t-toast', message: '图片分辨率过小!', }); return; } else { if (cW > cH) { if (cH > 1024) { cHeight = 1024; cWidth = parseInt((cW * 1024) / cH); } } else if (cW < cH) { if (cW > 1024) { cWidth = 1024; cHeight = parseInt((cH * 1024) / cW); } } else { cWidth = 1024; cHeight = 1024; } } that.setData({ cWidth: cWidth, cHeight: cHeight }); const ctx = wx.createCanvasContext('attendCanvasId'); ctx.drawImage(_fileUrl, 0, 0, cWidth, cHeight); ctx.draw(false, function () { setTimeout(() => { wx.canvasToTempFilePath({ x: 0, y: 0, width: cWidth, height: cHeight, destWidth: cWidth, destHeight: cHeight, canvasId: 'attendCanvasId', success(res) { _fileUrl = res.tempFilePath; wx.request({ url: urlPrefix + '/QingLong/HuiYa/wxGetSignature', method: "POST", data: { token: wx.getStorageSync('token'), }, header: { 'content-type': 'application/x-www-form-urlencoded' }, success(res) { if (res.data.token) { wx.setStorageSync('token', res.data.token); } let signature = res.data.data.signature; let policy = res.data.data.policy; wx.uploadFile({ url: ossHost, filePath: _fileUrl, name: 'file', formData: { OSSAccessKeyId: ossAK, key, policy, signature }, success: (res) => { if (res.statusCode === 204) { let uploadBtnFlg = true; let imgArr = that.data.thumb_list.concat('http://hzkc.oss-cn-beijing.aliyuncs.com/Images/Upload/' + fileName); if (imgArr.length == that.data.input_img_count) { uploadBtnFlg = false; } that.setData({ uploadStatus: uploadBtnFlg, imageStatus: true, thumb_list: imgArr }); } } }); } }); } }); }, 200); }); } }); } else { Toast({ context: this, selector: '#t-toast', message: '只允许上传.png、.jpg、.jpep 格式!', }); } }, exampleHandle(e) { let _url = this.data.example_source; wx.previewImage({ urls: [_url] }); }, closeIconTap(e) { let imgArr = this.data.thumb_list; imgArr.splice(e.target.id, 1); this.setData({ uploadStatus: true, thumb_list: imgArr }); }, generateHandle(e) { let that = this; if (this.data.imageStatus) { if (this.data.thumb_list.length != this.data.input_img_count) { Toast({ context: this, selector: '#t-toast', message: '需上传2张照片!', }); return; } else { this.setData({ gText: false, gLoading: true }); wx.request({ url: urlPrefix + '/QingLong/HuiYa/wxAddTask', method: "POST", header: { 'content-type': 'application/x-www-form-urlencoded' }, data: { token: wx.getStorageSync('token'), model_id: 49, prompt_id: this.data.prompt_id, source_img_url: this.data.thumb_list.join(","), count: 1 }, success(res) { if (res.data.token) { wx.setStorageSync('token', res.data.token); } if (res.data.success) { that.setData({ generateStatus: true }); Toast({ context: this, duration: 3500, theme: 'success', selector: '#t-toast', message: res.data.estimation_finish_time, }); } else { Toast({ context: this, theme: 'fail', selector: '#t-toast', message: res.data.message, }); return; } } }); } } else { Toast({ context: this, selector: '#t-toast', message: '请上传照片!', }); } }, toast_close(e) { if (this.data.generateStatus) { wx.navigateBack({ delta: 1 }); } }, historyImgHandle(e) { this.setData({ historyImgSelectIndex: e.currentTarget.dataset.index }) if (this.data.input_img_count == 1) { this.setData({ thumb_list: [this.data.historyImgList[e.currentTarget.dataset.index].source_img_url], uploadStatus: false, imageStatus: true }); } else { if (this.data.thumb_list.length == 2) { this.setData({ uploadStatus: false, imageStatus: true }); } else { let imgArr = this.data.thumb_list.concat(this.data.historyImgList[e.currentTarget.dataset.index].source_img_url); this.setData({ thumb_list: imgArr, uploadStatus: false, imageStatus: true }); } } }, ballMoveEvent(e) { let left = e.touches[0].pageX let rightLimit = wx.getSystemInfoSync().windowWidth - 222 //减去页面内边距 if (left < 0) { left = 0; } if (left >= rightLimit) { left = rightLimit; } this.setData({ left }); }, styleClickHandle(e) { let styleObj = this.data.styleList[e.target.id]; this.setData({ afterUrl: styleObj.view_before_img_url, frontUrl: styleObj.view_after_img_url, styleSelectIndex: e.target.id, prompt_id: styleObj.prompt_id }); this.getStyleInfo(); }, getGuid() { var guid = "" for (var i = 1; i <= 32; i++) { var n = Math.floor(Math.random() * 16.0).toString(16); guid += n; if ((i == 8) || (i == 12) || (i == 16) || (i == 20)) guid += "-"; } return guid; }, });