小程序制作海报可以通过一些小程序直接上传图片实现,,,这里小编为各人介绍怎样通过小程序自己制作海报并分享到朋侪圈呢???

添加画布
首先,,,在小程序里举行绘图操作需要用到<canvas>组件,,,那我们就先在pp电子wxml代码中放入如下的<canvas>:
<canvas canvas-id="shareCanvas" style="width:600px;height:900px"></canvas>
这样一来我们就有了一个600x900的绘图区域。。。。。。然后,,,我们要最先写JS代码在这张画布上举行绘图操作。。。。。。
方法1:绘制配景图
通过视察《长城你造不造》合成的那张分享图,,,我们可以剖析得出它的组成主要有以下3个部分:一张大的配景图,,,一段动态的文字(xxxx 喊你“一起来为修长城献砖”),,,以及一个小程序码图片。。。。。。
那么我们就先找一张图片来当做配景图,,,将它画到画布上去,,,代码大致如下:
const wxGetImageInfo = promisify(wx.getImageInfo)
wxGetImageInfo({
src: 'https://some-domain/bg.png'
}).then(res => {
const ctx = wx.createCanvasContext('shareCanvas')
ctx.drawImage(res.path, 0, 0, 600, 900)
ctx.draw()
})
在这段代码中,,,我们通过使用wx.getImageInfo这个API来下载一个网络图片到外地(并可获取该图片的尺寸等其他信息),,,然后挪用ctx.drawImage要领将图片绘制到画布上,,,填满画布。。。。。。
方法2:绘制文字
接着,,,让我们来在画布上继续绘制一段文字,,,一般这种宣传用的分享图,,,少不了文字形貌,,,并且可能是凭证场景内容差别而爆发的动态信息,,,好比可能是一篇文章的作者、文章的问题和内容。。。。。。
我们实验下在画布上添加一段居中显示的文字:“作者:一斤代码”,,,照旧基于前面的那段代码接着写:
const wxGetImageInfo = promisify(wx.getImageInfo)
wxGetImageInfo({
src: 'https://some-domain/bg.png'
}).then(res => {
const ctx = wx.createCanvasContext('shareCanvas')
// 底图
ctx.drawImage(res.path, 0, 0, 600, 900)
// 作者名称
ctx.setTextAlign('center') // 文字居中
ctx.setFillStyle('#000000') // 文字颜色:玄色
ctx.setFontSize(22) // 文字字号:22px
ctx.fillText(“作者:一斤代码”, 600 / 2, 500)
ctx.stroke()
ctx.draw()
})
由于在canvas上绘制文字不会自动折行,,,若是要画一段较量长的文本,,,可以思量限制一行的字数,,,将长文本拆分成几行来画。。。。。。
方法3:绘制小程序码
最后,,,我们在画布最后添加一个小程序码,,,可以是静态的小程序码,,,也可以是好比为每一篇文章动态天生的小程序码(参考《微信小程序之天生自界说参数小程序二维码》这篇文章),,,横竖这个小程序码也就是一张图片,,,以是绘制要领跟绘制底图差未几。。。。。。最后的代码类似云云:
const wxGetImageInfo = promisify(wx.getImageInfo)
Promise.all([
wxGetImageInfo({
src: 'https://some-domain.com/background.png'
}),
wxGetImageInfo({
src: 'https://some-domain.com/api/generate/qrcode'
})
]).then(res => {
const ctx = wx.createCanvasContext('shareCanvas')
// 底图
ctx.drawImage(res[0].path, 0, 0, 600, 900)
// 作者名称
ctx.setTextAlign('center') // 文字居中
ctx.setFillStyle('#000000') // 文字颜色:玄色
ctx.setFontSize(22) // 文字字号:22px
ctx.fillText(“作者:一斤代码”, 600 / 2, 500)
// 小程序码
const qrImgSize = 180
ctx.drawImage(res[1].path, (600 - qrImgSize) / 2, 530, qrImgSize, qrImgSize)
ctx.stroke()
ctx.draw()
})
这样,,,差未几pp电子分享图就天生好了。。。。。。
生涯到系统相册
接着,,,我们要把它生涯进用户的系统相册中去,,,实现这个功效,,,我们主要靠wx.canvasToTempFilePath和wx.saveImageToPhotosAlbum这两个API。。。。。。
主要的流程就是先通过wx.canvasToTempFilePath将<canvas>上绘制的图像天生暂时文件的形式,,,然后再通过wx.saveImageToPhotosAlbum举行生涯到系统相册的操作。。。。。。
const wxCanvasToTempFilePath = promisify(wx.canvasToTempFilePath)
const wxSaveImageToPhotosAlbum = promisify(wx.saveImageToPhotosAlbum)
wxCanvasToTempFilePath({
canvasId: 'shareCanvas'
}, this).then(res => {
return wxSaveImageToPhotosAlbum({
filePath: res.tempFilePath
})
}).then(res => {
wx.showToast({
title: '已生涯到相册'
})
})
其中promise.util.js如下:
[javascript] view plain copy
/**
* 将wx的callback形式的API转换成支持Promise的形式
*/
module.exports = {
promisify: api => {
return (options, ...params) => {
return new Promise((resolve, reject) => {
const extras = {
success: resolve,
fail: reject
}
api({ ...options, ...extras }, ...params)
})
}
}
KESION pp电子软件
KESION pp电子软件是海内领先的在线教育软件及私域社交电商软件服务提供商,,,恒久专注于为企业提供在线教育软件及社交电商SaaS平台解决方案。。。。。。
公司焦点产品云开店SaaS社交电商服务平台、在线教育SaaS服务平台、教育企业数字化SaaS云平台、企微营销助手、私有化自力安排品牌网校和在线教育咨询等。。。。。。KESION 一直通过手艺立异,,,提供产品和服务,,,助力企业向数字化转型,,,通过科技驱动商业刷新,,,让商业变得更智慧!
pp电子最新新闻:拼多多应该算是开发小程序的第一批开发商了,,,现在拼多多小程序开发上线以来,,,半年积累过亿付用度户,,,带来了重大的流量。。。。。。...
小程序定位周围店肆的建设,,,可以将用户周围的店面展现出来,,,从而提高门店到访率。。。。。。...