<view class="intro">
<view>
原始价格:<input class="price" type="num" value="{{price}}" bindinput="bindKeyP" placeholder="请输入"/>
</view>
<view>
拼团价格:<input class="price" type="num" value="{{teamprice}}" bindinput="bindKeyT" placeholder="请输入"/>
</view>
<view>
规格:<input class="price" value="{{specs}}" bindinput="bindKeyS" placeholder="请输入"/>
</view>
<view>
文案:<input class="wenan" value="{{wenan}}" placeholder="请输入#号分割(8个字)" bindinput="bindKeyW"/>
</view>
<view class="imgitem" >
上传图片:
<image style="width: 100%; height: 100%" src="{{poster}}" bindtap="chooseImg" mode="aspectFill" />
</view>
</view>
<button class='zfbtn m_l' bindtap='formSubmit'>融合</button>
<!--生成海报 -->
<view class='imagePathBox' hidden="{{maskHidden == false}}">
<image src="{{imagePath}}" class='shengcheng' bindtap="previewImg"></image>
<button class='baocun' bindtap='baocun'>保存</button>
</view>
<view hidden="{{maskHidden == false}}" class="mask"></view>
<view class="canvas-box">
<canvas type="2d" style="width: 500px;height: 400px;position:fixed;top:9999px" id="mycanvas"/>
</view>
Page({
data: {
imagePath: "",
maskHidden: false,
price: '25.6',
isCreate: false,
teamprice: '66.3',
specs: '3包',
wenan: "卡时间段#快速度快",
poster: "https://juxinbox.oss-cn-hangzhou.aliyuncs.com/a2ceb86356fd4d9895b0f1d38216f3ca.jpg",
},
onLoad: function () {
},
onReady() {
},
onShow: function () {
},
// /点击生成
formSubmit: function (e) {
var that = this;
this.setData({
maskHidden: false
});
wx.showToast({
title: '融合中...',
icon: 'loading',
duration: 1000
});
setTimeout(function () {
wx.hideToast()
that.createNewImg();
that.setData({
maskHidden: true
});
}, 1000)
},
async createNewImg() {
var that = this;
const query = wx.createSelectorQuery();
const canvasObj = await new Promise((resolve, reject) => {
query.select('#mycanvas')
.fields({ node: true, size: true })
.exec(async (res) => {
console.log('2323', res)
resolve(res[0].node);
const canvas = res[0].node
const CanvasContext = canvas.getContext('2d')
console.log('334', CanvasContext)
const dpr = wx.getSystemInfoSync().pixelRatio;
canvas.width = res[0].width * dpr;
canvas.height = res[0].height * dpr;
CanvasContext.scale(dpr, dpr);
CanvasContext.clearRect(0, 0, 500, 400); //清空画板
CanvasContext.fillStyle = "#fff";
CanvasContext.fillRect(0, 0, 500, 400);
let ImgG = canvas.createImage();
ImgG.src = that.data.poster;
ImgG.onload = () => {
console.log('2121',ImgG)
CanvasContext.drawImage(ImgG,0,0,500,400);
}
let ImgBg = canvas.createImage();
ImgBg.src = 'https://juxinbox.oss-cn-hangzhou.aliyuncs.com/8a15590c713541928071696c7a576d13.png';
ImgBg.onload = () => {
console.log('212',ImgBg)
CanvasContext.drawImage(ImgBg,0,0,500,400);
//¥
// CanvasContext.save()
CanvasContext.font = '20px 宋体'
CanvasContext.fillStyle = '#000';
CanvasContext.textAlign = 'center';
//("文案",x轴,y轴)
CanvasContext.fillText("¥", 20, 375);
CanvasContext.stroke();
// 团购价
var pv = that.data.teamprice.split('.');
CanvasContext.font = 'normal 500 40px DINAlternate-Bold'
CanvasContext.fillStyle = '#FFF9F9';
CanvasContext.textAlign = 'center';
// ("文案",x轴,y轴)1位x=50;2位55
CanvasContext.fillText(pv[0], 55, 377);
CanvasContext.stroke();
CanvasContext.font = 'normal 500 32px DINAlternate-Bold'
CanvasContext.fillStyle = '#FFF9F9';
CanvasContext.textAlign = 'center';
// ("文案",x轴,y轴)1位x=75;2位55
CanvasContext.fillText('.' + pv[1], 90, 377);
CanvasContext.stroke();
//规格
CanvasContext.font = 'normal 500 16px DINAlternate-Bold'
CanvasContext.fillStyle = '#FFF';
CanvasContext.textAlign = 'center';
// ("文案",x轴,y轴)1位x=92;2位109
CanvasContext.fillText('/', 108, 375);
CanvasContext.stroke();
CanvasContext.font = 'normal 500 16px DINAlternate-Bold'
CanvasContext.fillStyle = '#FFF';
CanvasContext.textAlign = 'center';
// ("文案",x轴,y轴)1位x=109;2位55
CanvasContext.fillText(that.data.specs, 124, 377);
CanvasContext.stroke();
//原价
CanvasContext.font = 'normal 500 12px Source Han Sans CN'
CanvasContext.fillStyle = '#FFF';
CanvasContext.textAlign = 'center';
// ("文案",x轴,y轴)
CanvasContext.fillText('原价:' + that.data.price, 70, 395);
CanvasContext.stroke();
CanvasContext.fillStyle = '#fff'
// ("x轴","Y轴","宽","高")
CanvasContext.strokeRect(40, 391, 60, 0)
var name = that.data.wenan.split('#');
//文案(normal->正常 500->粗细 32px->大小 Source Han Sans SC->字体)
CanvasContext.font = '32px 宋体'
CanvasContext.fillStyle = '#FFF';
CanvasContext.textAlign = 'center';
// ("文案",x轴,y轴)
CanvasContext.fillText(name[0], 260, 380);
CanvasContext.stroke();
CanvasContext.font = '32px 宋体'
CanvasContext.fillStyle = '#FFF';
CanvasContext.textAlign = 'center';
// ("文案",x轴,y轴)
CanvasContext.fillText(name[1], 410, 380);
CanvasContext.stroke();
// CanvasContext.restore()
}
})
});
console.log('33',canvasObj)
wx.canvasToTempFilePath({
canvas: canvasObj,
success: function (res) {
console.log('234', res)
var tempFilePath = res.tempFilePath;
that.setData({
imagePath: tempFilePath,
canvasHidden: true
});
},
fail: function (res) {
console.log(212,res);
}
});
// var CanvasContext = wx.createCanvasContext('mycanvas');
// CanvasContext.setFillStyle("#fff")
// CanvasContext.fillRect(0, 0, 500, 400);
// wx.getImageInfo({
// src: that.data.poster,
// success: function (res) {
// console.log('22',res.path)
// CanvasContext.drawImage(res.path, 0, 0, 500, 400);
// wx.getImageInfo({
// src: 'https://juxinbox.oss-cn-hangzhou.aliyuncs.com/8a15590c713541928071696c7a576d13.png',
// success: function (res) {
// console.log('223',res.path)
// CanvasContext.drawImage(res.path, 0, 0, 500, 400);
// //¥
// CanvasContext.font = 'normal 500 20px DIN Alternate'
// CanvasContext.setFillStyle('#FFF');
// CanvasContext.setTextAlign('center');
// //("文案",x轴,y轴)
// CanvasContext.fillText("¥", 20, 375);
// CanvasContext.stroke();
// //团购价
// var pv = that.data.teamprice.split('.');
// CanvasContext.font = 'normal 500 40px DINAlternate-Bold'
// CanvasContext.setFillStyle('#FFF9F9');
// CanvasContext.setTextAlign('center');
// // ("文案",x轴,y轴)1位x=50;2位55
// CanvasContext.fillText(pv[0], 55, 377);
// CanvasContext.stroke();
// CanvasContext.font = 'normal 500 32px DINAlternate-Bold'
// CanvasContext.setFillStyle('#FFF9F9');
// CanvasContext.setTextAlign('center');
// // ("文案",x轴,y轴)1位x=75;2位55
// CanvasContext.fillText('.'+ pv[1],90, 377);
// CanvasContext.stroke();
// //规格
// CanvasContext.font = 'normal 500 16px DINAlternate-Bold'
// CanvasContext.setFillStyle('#FFF');
// CanvasContext.setTextAlign('center');
// // ("文案",x轴,y轴)1位x=92;2位109
// CanvasContext.fillText('/',108, 375);
// CanvasContext.stroke();
// CanvasContext.font = 'normal 500 16px DINAlternate-Bold'
// CanvasContext.setFillStyle('#FFF');
// CanvasContext.setTextAlign('center');
// // ("文案",x轴,y轴)1位x=109;2位55
// CanvasContext.fillText(that.data.specs,124, 377);
// CanvasContext.stroke();
// //原价
// CanvasContext.font = 'normal 500 12px Source Han Sans CN'
// CanvasContext.setFillStyle('#FFF');
// CanvasContext.setTextAlign('center');
// // ("文案",x轴,y轴)
// CanvasContext.fillText('原价:'+that.data.price,70, 395);
// CanvasContext.stroke();
// CanvasContext.setStrokeStyle('#fff')
// // ("x轴","Y轴","宽","高")
// CanvasContext.strokeRect(40, 391, 60, 0)
// var name = that.data.wenan.split('#');
// //文案(normal->正常 500->粗细 32px->大小 Source Han Sans SC->字体)
// CanvasContext.font = 'normal 500 32px Source Han Sans SC'
// CanvasContext.setFillStyle('#FFF');
// CanvasContext.setTextAlign('center');
// // ("文案",x轴,y轴)
// CanvasContext.fillText(name[0], 260, 380);
// CanvasContext.stroke();
// CanvasContext.font = 'normal 500 32px Source Han Sans SC'
// CanvasContext.setFillStyle('#FFF');
// CanvasContext.setTextAlign('center');
// // ("文案",x轴,y轴)
// CanvasContext.fillText(name[1], 410, 380);
// CanvasContext.stroke();
// CanvasContext.draw();
// }
// })
// }
// })
//将生成好的图片保存到本地,需要延迟一会,绘制期间耗时
//非2d
// setTimeout(function () {
// wx.canvasToTempFilePath({
// canvasId: 'mycanvas',
// success: function (res) {
// console.log('234', res)
// var tempFilePath = res.tempFilePath;
// that.setData({
// imagePath: tempFilePath,
// canvasHidden: true
// });
// },
// fail: function (res) {
// console.log(res);
// }
// });
// }, 1000);
},
previewImg() {
if (this.data.imagePath) {
//预览图片,预览后可长按保存或者分享给朋友
wx.previewImage({
urls: [this.data.imagePath]
})
}
},
bindKeyS: function (e) {
this.setData({
specs: e.detail.value
})
},
bindKeyP: function (e) {
this.setData({
price: e.detail.value
})
},
bindKeyT: function (e) {
this.setData({
teamprice: e.detail.value
})
},
bindKeyW: function (e) {
this.setData({
wenan: e.detail.value
})
},
chooseImg: function (e) {
var that = this;
// const urls = that.data.urls
// 选择图片
wx.chooseImage({
count: 1, // 默认9
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],// 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
console.log('上传图片', res)
wx.showLoading({
title: '上传中',
mask: true
})
const tempFilePaths = res.tempFilePaths[0]
wx.uploadFile({
//上传图片的网路请求地址
url: 'https://test2.juxinbox.com/jmtyjmall/api/1.0/wx/goods/mng/uptImg',
filePath: tempFilePaths,
name: 'file',
success: function (res) {
console.log("success", res);
var jsonStr = res.data;
jsonStr = JSON.parse(jsonStr)
console.log('313', jsonStr)
const imgurls = jsonStr.data
that.setData({
poster: imgurls
})
wx.hideLoading()
},
fail: function (res) {
console.log("error");
wx.hideLoading()
}
});
}
})
console.log('shangchuan', this.data)
},
baocun: function () {
var that = this;
console.log('用户点击保存');
wx.getSetting({
success(res) {
console.log('223', res)
if (!res.authSetting['scope.writePhotosAlbum']) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
console.log('授权成功')
},
fail() {
console.log('22311', res)
}
})
} else {
wx.saveImageToPhotosAlbum({
filePath: that.data.imagePath,
success(res) {
wx.showModal({
content: "已保存",
showCancel: false,
confirmText: "好的",
confirmColor: "#333",
success: function (res) {
if (res.confirm) {
console.log("用户点击确定");
/* 该隐藏的隐藏 */
that.setData({
maskHidden: false,
closeShare2: false,
isCreate: false,
});
}
},
fail: function (res) {
console.log(11111);
}
});
}
});
}
}
})
},
})
1732

被折叠的 条评论
为什么被折叠?



