H5 活动利用Canvas把用户信息和二维码合并到图片内。

之前一直都在写业务类的页面,非常少接触canvas,最近公司要出一个测试类的H5活动页面,需要在用户完成测试后把用户输入的资料和二维码合并在测试结果图中。

其中有个坑,就是canvas是不能使用rem单位的,所以开头我就打算动态取页面中img的宽度来进行2倍图的绘画,结果掉进了这个坑里非常烦恼,然后突然想到其实只要按设计给你的图片的原先尺寸进行绘画就行了,并不需要动态进行宽高设置。

下面是实现代码:

vue框架:

import QRCode from 'qrcode'   // 二维码生成

export default {
   
	....moreCode,
	methods: {
   
		async getImg(){
   
			let imgbox = this.$refs.imgbox;  // 获取页面上的img
			let img = new Image();  
	     	let qImg = new 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Node.js 中使用 Canvas 库来绘制图片并添加二维码,你可以按照以下步骤进行操作: 1. 首先,确保你已经安装了 `canvas` 和 `qrcode` 这两个 Node.js 模块。你可以使用以下命令进行安装: ```bash npm install canvas qrcode ``` 2. 创建一个 `index.js` 文件,并在其中编写以下代码: ```javascript const { createCanvas, loadImage } = require('canvas'); const QRCode = require('qrcode'); // 创建一个画布 const canvas = createCanvas(400, 400); const ctx = canvas.getContext('2d'); // 加载背景图片 loadImage('path/to/background.jpg').then((image) => { // 绘制背景图片 ctx.drawImage(image, 0, 0, canvas.width, canvas.height); // 生成二维码 QRCode.toDataURL('https://example.com', (err, url) => { if (err) throw err; // 加载二维码图片 loadImage(url).then((qrCodeImage) => { // 调整二维码图片的大小 const qrCodeSize = 200; ctx.drawImage(qrCodeImage, (canvas.width - qrCodeSize) / 2, (canvas.height - qrCodeSize) / 2, qrCodeSize, qrCodeSize); // 将画布保存为图片文件 const fs = require('fs'); const out = fs.createWriteStream('output.jpg'); const stream = canvas.createJPEGStream(); stream.pipe(out); out.on('finish', () => console.log('The image was created.')); }); }); }); ``` 3. 将 `path/to/background.jpg` 替换为实际的背景图片路径,然后保存文件。 4. 执行以下命令来运行脚本: ```bash node index.js ``` 5. 运行完成后,你将在同级目录下生成一个名为 `output.jpg` 的图片文件,其中包含了背景图片和添加了二维码的画布内容。 请注意,上述代码中使用的是 `canvas.createJPEGStream()` 方法来保存画布为 JPEG 格式的图片,如果你需要保存为其他格式,可以使用相应的方法进行调整。另外,确保你已经将 `https://example.com` 替换为实际的二维码内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值