export default { async checkImgHttp(imgPath, type) { let res = await this.getImageInfo_PromiseFc(imgPath) console.log("getImageInfo_PromiseFc",imgPath) console.log("checkImgHttp",res) let newPath = ''; if (!res) { uni.hideLoading() switch (type) { case 'avatar': console.log('%cerr:海报头像图片错误: ' + imgPath, 'color:green;background:yellow'); break; case 'bgImage': console.log('%cerr:海报背景图片错误: ' + imgPath, 'color:green;background:yellow'); break; case 'wxCode': console.log('%cerr:海报微信二维码图片错误: ' + imgPath, 'color:green;background:yellow'); break; case 'goodsImage': console.log('%cerr:海报商品图片错误: ' + imgPath, 'color:green;background:yellow'); break; default: break; } } else { let pathArr = imgPath.split('://'); // #ifdef H5 let ishttps = 'https:' == window.location.protocol ? true : false; ishttps ? (pathArr[0] = 'https') : (pathArr[0] = 'http'); // #endif // #ifdef MP-WEIXIN pathArr[0] = 'https' // #endif newPath = pathArr.join('://'); } return newPath; }, // 检测图片是否可用 getImageInfo_PromiseFc(imgPath) { console.log("getImageInfo_PromiseFc",imgPath) return new Promise((rs, rj) => { imgPath = this.checkMPUrl(imgPath); console.log("checkMPUrl",imgPath) uni.getImageInfo({ src: imgPath, success: res => { rs(1); }, fail: err => { console.log(err) rs(0); } }) }); }, // 微信头像 checkMPUrl(url) { // #ifdef MP if ( url.substring(0, 4) === 'http' && url.substring(0, 5) !== 'https' && url.substring(0, 12) !== 'http://store' && url.substring(0, 10) !== 'http://tmp' && url.substring(0, 10) !== 'http://usr' ) { url = 'https' + url.substring(4, url.length); } // #endif return url; }, /** * 相对比例 * @param {Object} bgObj - 背景图片数据对象 * @param {Number} num - 需要计算的绘制模块数值 */ getScale(bgObj, num = 0) { return Number(bgObj.width * (num / bgObj.width).toFixed(2)) }, /** * 绘制序列 * @param {Object} bgObj - 背景图片数据对象 * @param {Array} drawArr - 绘制元素数组对象 */ initDrawArray(bgObj, drawArr) { const that = this; let arr = [] drawArr.forEach(item => { switch (item.type) { case 'text': arr.push({ type: 'text', text: item.text, //文本 size: that.getScale(bgObj, item.size) || 50, //大小 color: item.color || 'black', //颜色 alpha: item.alpha || 1, //透明度 textAlign: item.textAlign || 'left', //文字x对齐方式: 'left'、'middle'、'right' textBaseline: item.textBaseline || 'middle', //文字y对齐方式: 'top'、'bottom'、'middle'、'normal' dx: that.getScale(bgObj, item.dx) || 0, //文字x轴位置 dy: that.getScale(bgObj, item.dy + item.size) || 0, //文字y轴位置 [item.lineFeed ? 'lineFeed' : '']: { //设置换行 maxWidth: item.lineFeed?.maxWidth && that.getScale(bgObj, item.lineFeed .maxWidth) || bgObj .width, //最大宽度 lineHeight: item.lineFeed?.lineHeight && that.getScale(bgObj, item .lineFeed.lineHeight) || 50, //行高 lineNum: item.lineFeed?.lineNum || -1, // 最多行数,小于0为无限 dx: item.lineFeed?.dx || -1, //非第一行文字位置,小于0为默认位置 }, infoCallBack: (textLength) => { //回调函数,返回文本信息 if (item.isBgCenter) { return { dx: (bgObj.width - textLength) / 2, } } return {} }, [item.lineThrough ? 'lineThrough' : '']: { // 设置删除线,默认为字体样式 width: item.lineThrough?.width || item.size / 10, style: item.lineThrough?.style || item.color, alpha: item.lineThrough?.alpha || 1, cap: item.lineThrough?.cap || 'butt', }, fontStyle: item.fontStyle || 'normal', // 设置字体,跟随系统默认 fontVariant: item.fontVariant || 'normal', fontWeight: item.fontWeight || 'normal', fontFamily: item.fontFamily || 'sans-serif', }) break; case 'qrcode': arr.push({ type: 'qrcode', text: String(item.text || '') || '', // 生成内容 size: Number(that.getScale(bgObj, item.size) || 0) || 200, // 二维码大小 background: String(item.background || '') || '#ffffff', // 背景色 foreground: String(item.foreground || '') || '#000000', // 前景色 correctLevel: Number(item.correctLevel || 0) || 3, // 容错级别 image: String(item.image || '') || '', // 二维码图标 imageSize: Number(that.getScale(bgObj, item.imageSize) || 0) || 40, // 二维码图标大小 dx: item.isBgCenter ? (bgObj.width - item.size) / 2 : Number(that.getScale( bgObj, item.dx) || 0) || 0, dy: Number(that.getScale(bgObj, item.dy) || 0) || 0, // y轴距离 }) break; case 'image': arr.push({ type: 'image', url: this.checkImgHttp(item.url, item.name), // 网络图片路径 dWidth: Number(that.getScale(bgObj, item.dWidth) || 0) || 100, //绘制图像的宽度,允许缩放 dHeight: Number(that.getScale(bgObj, item.dHeight) || 0) || 100, //绘制图像的高度,允许缩放 sWidth: Number(that.getScale(bgObj, item.sWidth) || 0) || 100, //绘制图像的宽度,允许缩放 sHeight: Number(that.getScale(bgObj, item.sHeight) || 0) || 100, //绘制图像的高度,允许缩放 dx: Number(that.getScale(bgObj, item.dx) || 0) || 0, // x轴距离 dy: Number(that.getScale(bgObj, item.dy) || 0) || 0, // y轴距离 sx: Number(that.getScale(bgObj, item.sx) || 0) || 0, sy: Number(that.getScale(bgObj, item.sy) || 0) || 0, [item.circleSet ? 'circleSet' : '']: { //圆形设置 r: Number(item.circleSet?.r && that.getScale(bgObj, item.circleSet .r) || 0), x: Number(item.circleSet?.x && that.getScale(bgObj, item.circleSet .x) || 0), y: Number(item.circleSet?.y && that.getScale(bgObj, item.circleSet .y) || 0), }, [item.roundRectSet ? 'roundRectSet' : '']: { //圆角设置 r: Number(item.roundRectSet?.r && that.getScale(bgObj, item .roundRectSet.r) || 0), }, infoCallBack: (imgInfo) => { //回调函数,返回图片信息 if (item.isBgCenter) { return { dx: (bgObj.width - item.dWidth) / 2, } } }, }) break; default: _app.log('暂无次类型'); break; } }) return arr } }