本篇文章给大家带来的内容是关于微信小程序中生成图片的代码,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
添加画布首先,在小程序里进行绘图操作需要用到5ba626b379994d53f7acf72a64f9b697组件,步骤大致分为以下3个部分:一张大的背景图,一段动态的文字(‘标题 用户名 及其他信息’),以及一个小程序码图片。那我们就先在我们的wxml代码中放入如下的5ba626b379994d53f7acf72a64f9b697:
<!--wxml代码--><view style='width:100%;height:100%;' bindlongpress='saveinvitecard'> <canvas canvas-id="sharecanvas" style="width:{{windowwidth}}px;height:{{windowheight}}px" ></canvas></view>
第三方函数引入
const util = require('../../utils/util.js')
//util.jsvar promise = require('../components/bluebird.min.js')module.exports = { promisify: api => { return (options, ...params) => { return new promise((resolve, reject) => { const extras = { success: resolve, fail: reject } api({ ...options, ...extras }, ...params) }) } }}
bluebird.min.js大家可自己百度下载,源文件代码太长,我这里就不复制粘贴了。
//获取手机宽高 wx.getsysteminfo({ success: function (res) { wc.put('phoneinfo', res) } });var windowheight = phoneinfo.windowheight, windowwidth = phoneinfo.windowwidthself.setdata({ windowheight: windowheight, windowwidth: windowwidth })//在这段代码中,我们通过使用wx.getimageinfo这个api来下载一个网络图片到本地(并可获取该图片的尺寸等其他信息),然后调用ctx.drawimage方法将图片绘制到画布上,填满画布。const wxgetimageinfo = util.promisify(wx.getimageinfo)//绘制二维码promise.all([ //背景图 wxgetimageinfo({ src: 'https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1536213812443&di=753a0a49acfd390fba9fd7884daafa5c&imgtype=0&src=http%3a%2f%2fi5.hexunimg.cn%2f2016-08-10%2f185422031.jpg' }), //二维码 wxgetimageinfo({ src: 'https://ss0.bdstatic.com/70cfuhsh_q1ynxgkpowk1hf6hhy/it/u=1898297765,3486952215&fm=26&gp=0.jpg' }) ]).then(res => { console.log(res) if (res[0].errmsg == "getimageinfo:ok" && res[1].errmsg == "getimageinfo:ok"){ const ctx = wx.createcanvascontext('sharecanvas') // 底图 ctx.drawimage(res[0].path, 0, 0, windowwidth, windowheight) //写入文字 ctx.settextalign('center') // 文字居中 ctx.setfillstyle('#f3a721') // 文字颜色:黑色 ctx.setfontsize(22) // 文字字号:22px ctx.filltext("作者:墜夢—eric", windowwidth / 2, windowheight / 2) // 小程序码 const qrimgsize = 150 ctx.drawimage(res[1].path, (windowwidth - qrimgsize) / 2, windowheight / 1.8, qrimgsize, qrimgsize) ctx.stroke() ctx.draw() }else{ wx.showtoast({ title: '邀请卡绘制失败!', image:'../../asset/images/warning.png' }) } })
这样,差不多我们的分享图就生成好了。
长按图片保存到系统相册要把它保存进用户的系统相册中去,实现这个功能,我们主要靠wx.canvastotempfilepath和wx.saveimagetophotosalbum这两个api。
主要的流程就是先通过wx.canvastotempfilepath将<canvas>上绘制的图像生成临时文件的形式,然后再通过wx.saveimagetophotosalbum进行保存到系统相册的操作。
//保存邀请卡 saveinvitecard:function(){ console.log('保存图片') const wxcanvastotempfilepath = util.promisify(wx.canvastotempfilepath) const wxsaveimagetophotosalbum = util.promisify(wx.saveimagetophotosalbum) wxcanvastotempfilepath({ canvasid: 'sharecanvas' }, this).then(res => { return wxsaveimagetophotosalbum({ filepath: res.tempfilepath }) }).then(res => { wx.showtoast({ title: '已保存到相册' }) }) }
相关推荐:
微信小程序 二维码canvas绘制实例详解
微信小程序canvas基础详解
以上就是微信小程序中生成图片的代码的详细内容。