canvas.js
//获取应用实例
const app = getApp()
Page({
/**
- 页面的初始数据
*/
data: {
// canvas
_width: 0, //手机屏宽
_heigth: 0,//手机屏高
swiperHeight: 300,//主图图片高度
canvasType: false,//canvas是否显示
loadImagePath: ‘’,//下载的图片
imageUrl: ‘https://cos.myfaka.com/car/service/1.jpg’, //主图网络路径
codeUrl: ‘https://cos.myfaka.com/car/share/code.jpg’,//二维码网络路径
localImageUrl: ‘’, //绘制的商品图片本地路径
localCodeUrl: ‘’, //绘制的二维码图片本地路径
},
/**
- 生命周期函数–监听页面加载
*/
onLoad: function (options) {
},
/按生成图片按钮时/
creatQrcodePictures: function () {
wx.showLoading({
title: ‘正在绘制图片’,
})
/获取手机宽高/
let that = this
let imgHeigth = this.data.swiperHeight
let imgUrl = this.data.imageUrl
let qrcodeUrl = this.data.codeUrl
wx.getSystemInfo({
success(res) {
that.setData({
_width: res.windowWidth,
_heigth: res.windowHeight,
canvasType: true,
})
// 获取图片信息生成canvas
that.getImginfo([imgUrl, qrcodeUrl], 0);
}
})
},
// 获取图片信息
getImginfo: function (urlArr, _type) {
let that = this;
wx.getImageInfo({
src: urlArr[_type],
success: function (res) {
//res.path是网络图片的本地地址
if (_type === 0) { //商品图片
that.setData({
localImageUrl: res.path,
})
that.getImginfo(urlArr, 1)
} else {
that.setData({ //二维码
localCodeUrl: res.path,
})
// 创建canvas图片
that.createNewImg();
}
},
fail: function (res) {
//失败回调
console.log(‘Fail:’, _type, res)
}
});
},
//绘制canvas
createNewImg: function () {
let _width = this.data._width,
_heigth = this.data._heigth; //屏幕宽与高
let imgHeigth = this.data.swiperHeight, //原图片高度
scale = (_width - 40) / _width, //缩小比例
that = this;
let imgH = imgHeigth * scale; //绘制时图片显示高度
let ctx = wx.createCanvasContext(‘mycanvas’);
// 绘制背景
ctx.setFillStyle(“#fff”);
ctx.fillRect(0, 0, _width - 40, imgH + 160);
//绘制图片
ctx.drawImage(this.data.localImageUrl, 10, 10, _width - 60, imgH);
// 绘制标题
ctx.setFontSize(18);
ctx.setFillStyle(‘#333’);
let txtWidth = _width - 60 + 30 - 100 - 50; //文字的宽度
//商品名称
ctx.fillText(‘汽车服务:白金蜡’, 10, imgH + 40, txtWidth);
// 绘制价格单位 ‘¥’
ctx.setFontSize(14);
ctx.setFillStyle(‘#d2aa68’);
ctx.fillText(‘¥’, 10, imgH + 65, txtWidth);
// 绘制价格
ctx.setFontSize(18);
ctx.fillText(‘90元/次’, 26, imgH + 65, txtWidth);
// 绘制小程序名称
ctx.setFontSize(20);
ctx.setFillStyle(‘red’);
ctx.fillText(‘武鸣爱车’, 10, imgH + 105, txtWidth);
// 绘制提示信息
ctx.setFontSize(14);
ctx.setFillStyle(‘#999’);
ctx.fillText(‘微信小程序 • 长按识别’, 10, imgH + 125, txtWidth);
// 绘制二维码
ctx.drawImage(this.data.localCodeUrl, _width - 80 + 80 - 150, imgH + 20, 100, 100);
// 显示绘制
ctx.draw();
//将生成好的图片保存到本地,需要延迟一会,绘制期间耗时
setTimeout(function () {
wx.canvasToTempFilePath({
canvasId: ‘mycanvas’,
success: function (res) {
var tempFilePath = res.tempFilePath;
that.setData({
loadImagePath: tempFilePath,
});
},
fail: function (res) {
console.log(res);
}
});
}, 500);
//关闭提示
wx.hideLoading();
},
//点击保存到相册
saveImg: function () {
//调用wxapi.js里集成的接口
app.globalData.wxapi.saveImgToLocal(this.data.loadImagePath);
},
// 关闭弹窗
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
这里我就分享一份资料,希望可以帮助到大家提升进阶。
内容包含:Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。
如果你有需要的话,可以点击Android学习PDF+架构视频+面试文档+源码笔记获取免费领取方式
喜欢本文的话,不妨给我点个小赞、评论区留言或者转发支持一下呗~文章来源:https://www.toymoban.com/news/detail-849212.html
…(img-9Hse5Xh0-1710700178073)]
这里我就分享一份资料,希望可以帮助到大家提升进阶。
内容包含:Android学习PDF+架构视频+面试文档+源码笔记,高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料 这几块的内容。分享给大家,非常适合近期有面试和想在技术道路上继续精进的朋友。
如果你有需要的话,可以点击Android学习PDF+架构视频+面试文档+源码笔记获取免费领取方式
喜欢本文的话,不妨给我点个小赞、评论区留言或者转发支持一下呗~
文章来源地址https://www.toymoban.com/news/detail-849212.html
到了这里,关于微信小程序使用canvas画布生成二维码海报分享图片(完整示例代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!