nodejs实现二维码生成及图片合成


前端需要做分享功能。生成二维码后 在指定的图片上添加二维码和邀请码生成新的图片。

 

1.使用 qr-code生成二维码

/** * 根据url 地址生成 二维码 */ async createQr(url, name) { let qr_png = qr.image(url, { type: ‘png‘, size: 8, margin: 2 }); let imgName = `${this.app.config.share_path}/${name}.png`; let qr_pipe = qr_png.pipe(fs.createWriteStream(imgName)); return await new Promise((resolve, reject) => { qr_pipe.on(‘error‘, function(err) { console.log(err); resolve(null); }); qr_pipe.on(‘finish‘, function() { resolve(imgName.substring(3, imgName.length)); }); }).then(data => data); }

 

2.使用 text-to-svg 生成邀请码图片,字符转图片

const textToSVG = TextToSVG.loadSync();
      const svg = textToSVG.getSVG(id + ‘‘, {
        x: 0, y: 0, width: 80, height: 32, fontSize: 22, anchor: ‘left top‘, attributes: { fill: ‘white‘, // 字体颜色 stroke: ‘black‘, }, });

东莞vi设计https://www.houdianzi.com/dgvi/ 豌豆资源网站大全https://55wd.com

3.使用gm工具合成图片

svg2png(svg).then(d => { console.log(‘@@@@@@@@‘); const n = `${this.app.config.share_path}/${name}_number.png`; fs.writeFile(`${n}`, d, err => { gm().in(‘-page‘, ‘0,0‘)// -page是设置图片位置,所有的图片以左上为原点,向右、向下为正 .in(sourceImg)// 底图,到这里第一张图就设置完了,要先设置参数,再设置图片 .in(‘-resize‘, ‘250x250‘)// 设置微信二维码图片的大小(等比缩放) .in(‘-page‘, ‘+110+210‘)// 设置微信二维码图片的位置 .in(waterImg)// 二维码图 .in(‘-page‘, ‘+210+532‘)// logo图位置 .in(n)// logo图 .mosaic()// 图片合成 .write(lastput, function(err) { // 图片写入 if (err) { console.log(err); reject(new Error(‘error!!!!!!!!!!!!!!!!‘)); } else { console.log(‘ok‘); resolve(lastput.substring(3, lastput.length)); } }); }); });


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM