const { API_BASE_URL, IMG_BASE_URL } = require('../api/api') const watermarkImg = "../../img/watermark.png"; //水印图 /** * * 绘制水印 * * @param {*} tempFilePath 图片路径 * @param {*} photoName * @param {*} data 数据源 */ async function addWatermark(tempFilePath, data) { let canvasWidth = wx.getSystemInfoSync().screenWidth, canvasHeight=0; //获取图片信息 await wx.getImageInfo({ src: tempFilePath, }).then(res => { let watermarkScale = res.width / canvasWidth; canvasHeight = Math.round(res.height / watermarkScale); canvasWidth = res.width canvasHeight = res.height }); return new Promise(async (resolve, reject) => { wx.showLoading({ title: '绘制图片中', mask: true }) console.log("页面数据", tempFilePath) const dpr = wx.getSystemInfoSync().pixelRatio; //阴影的高度 const shadowHeight = Math.max(canvasWidth, canvasHeight) //创建画笔 const ctx = data.canvas.getContext('2d') //设置画布大小 data.canvas.width = canvasWidt data.canvas.height = canvasHeight // ctx.scale(dpr, dpr) // 创建图片对象 const image = data.canvas.createImage(); //设置图片路径 image.src = tempFilePath; //绘制照片 image.onload = () => { //绘制定位图标 const imageWatermark = data.canvas.createImage(); imageWatermark.src = watermarkImg imageWatermark.onload = () => { ctx.drawImage(imageWatermark, 0, 0, shadowHeight, shadowHeight) } ctx.drawImage(image, 0, 0, canvasWidth, canvasHeight) //绘制完成后将canvas转为为图片 setTimeout(() => { wx.hideLoading() wx.showLoading({ title: '请稍后', mask: true }) console.log("基础库信息", wx.getSystemInfoSync().SDKVersion) wx.canvasToTempFilePath({ canvas: data.canvas, fileType: 'jpg', quality: 1, success: (res) => { console.log("绘制图片成功", res); wx.uploadFile({ url: API_BASE_URL + 'common/weChat/uploadImage', filePath: res.tempFilePath, name: 'file', complete: function (res) { wx.hideLoading() console.log("上传图片", res) if (res.statusCode == 200) { const item = { url: "", name: "", } item.url = IMG_BASE_URL + res.data; item.name = res.data; resolve(item) } else { wx.showToast({ title: "选择失败", icon: 'none' }) } } }) }, fail: (res) => { console.log("绘制图片失败", res) wx.showToast({ title: "绘制失败", icon: 'none' }) } }) }, 500) } }) } module.exports = { addWatermark }