1.简述
链接生成二维码,再通过HTML5 中 canvas 和背景图片合成,生成海报
//创建一个canvasvar canvas = document.createElement("canvas");var context = canvas.getContext("2d"); //定义一个2d的环境// 定义宽高canvas.width = 750;canvas.height = 1334;
2.使用context.drawImage绘制图片
drawImage() 方法在画布上绘制图像、画布或视频。
drawImage() 方法也能够绘制图像的某些部分,以及/或者增加或减少图像的尺寸。
剪切图像,并在画布上定位被剪切的部分:
context.drawImage(img,x,y,width,height);
参数值
| 参数 | 描述 |
|---|---|
| img | 规定要使用的图像、画布或视频。 |
| x | 可选。开始剪切的 x 坐标位置。 |
| y | 可选。开始剪切的 y 坐标位置。 |
| width | 可选。被剪切图像的宽度。 |
| height | 可选。被剪切图像的高度。 |
3.写入背景图片
由于canvas通过Image对象写入,所以要把图片链接转成image
var bgImg = new Image();bgImg.src = bg;//要在onload写入,不然写入图片没用bgImg.onload = () => {// context.drawImage(图片对象, 绘制的X坐标, 绘制的Y坐标, 绘制图片的宽度, 绘制图片的高度);context.drawImage(bgImg, 0, 0, 750, 1334);}
4.使用QRCode.js把链接生成二维码
QRCode.js 是一个用于生成二维码的 JavaScript 库。主要是通过获取 DOM 的标签,再通过 HTML5 Canvas 绘制而成,不依赖任何库。
var qr = document.createElement("div"); //创建一个divnew QRCode(qr, {text: link, //生成图片的链接height: height, //图片高度width: width, //图片宽度colorDark: "#000000",colorLight: "#ffffff",correctLevel: QRCode.CorrectLevel.H});context.drawImage(qr.childNodes[0], 420, 680, 210, 200);
5.通过canvas.toDataURL转成base64
// 设置anonymous防止跨域img2.crossOrigin = "anonymous";img2.onload = function () {document.querySelector("#qr-code").src = img2.src;};
6. 绘制边框
context.lineWidth = 20; //设置绘制的宽度context.strokeStyle = "#ffffff"; //设置绘制的颜色context.strokeRect(410, 660, width, height); //开始绘制
7.绘制文字
context.font = " 38px Arial"; //设置字体大小和类型context.fillStyle = "rgba(255,255,255,1)"; //设置字体颜色context.fillText(font, 500, 450); //绘制文字
