前言
毕设的小程序要实现分享功能,我将分享功能按照不同的页面分成了三块。分享的内容都是动态定义的,而且因为微信只支持图片分享的模式,所以这里只能使用后端将分享的内容动态写进图片里,最后上传到七牛云,返回一个图片地址
阅读器页面分享
就是在阅读章节的时候选择分享,分享出去的图片应当展示的信息包括:书籍封面、书籍名称、章节名称、以及部分章节内容
书籍详情页分享
分享出去的图片应当展示的信息包括:书籍封面、书籍名称、作者、书籍类型、以及书籍简介,这块还在开发中,到时候再补进来
小程序首页分享
这个功能,我想加入到后台管理系统中,让管理员能自定义分享的图片,思路什么的还在考虑中。
具体实现
说了那么多,直接来看怎么撸代码吧
关于node自定义生成图片,有一个很好的npm包,叫做node-canvas,它可以让你在node中像在浏览器中一样绘制图像,诸如常见的drawImage、fillText、fillRect这些方法都支持。所以使用node绘制图像就不成大问题了,但关键是怎么绘制。
安装node-canvas
# 安装基础依赖
# ubuntu
sudo apt-get install libcairo2-dev libjpeg-dev libpango1.0-dev libgif-dev build-essential g++
# mac OS
brew install pkg-config cairo libpng jpeg giflib
# 安装canvas
npm install canvas
安装出现了问题或者想要知道更多关于node-canvas的信息,可以看看它的github首页
基础应用
比如用node-canvas绘制一段文字
import Canvas from 'canvas'
const canvas = new Canvas(300, 120) // 按照微信官方要求,长宽比5:4
const context = canvas.getContext('2d'<