宝哥软件园

Node.js在图片模板上生成一张带有底部文字描述的二维码图片 实现详解

编辑:宝哥软件园 来源:互联网 时间:2021-08-21

在Node.js中,我们可以通过qr-image包直接在后台生成二维码图像,使用方法非常简单:

var QR=require(' QR-image ');exports . createqrimage=function(RES,str){ var img=QR . image(str);//将生成二维码图像Res. writehead (200,{ ' content-type ' : ' image/png ' });img . pipe(RES);};但是,如果我们不仅要生成二维码,还要在给定的背景图片上生成二维码,并且在底部有相应的文本描述,那么我们需要使用其他的包来实现。

Images package是Node.js上的一个轻量级跨平台图像处理库,可以用来编辑和绘制图片。Svg2png用于将生成的Svg转换为png图片。文本到svg用于将给定的文本转换成相应的svg。以下是相应的实现代码:

exports . genqrimage=function(text,URL){ const TTS=texttosvg . loadsync(path . join(_ _ dirname,'././msyh . TTF ');const tSvg=tts.getSVG(text,{ x: 0,y: 0,fontSize: 20,anchor : ' top ' });常量边距=35;//二维码左右边距为常量top=90//二维码与顶部var的距离源图像=图像(路径。联接(_ _ dirname,'././来源。png ');var w=source image . width();//模板图片返回SVG 2png (tsvg)的宽度。然后((rst)={ var text image=images(rst);var QR image=images(QR . imagesync(URL,{type: 'png'}))。尺寸(w -边距* 2);//二维码的大小为:模板图片的宽度减去左右边距返回sourceimage.draw (qrimage,margin,Top)//二维码的位置:x=左边距,y=top.draw (textimage,(w-textimage.width ())/2,Top qrImage.height() 10) //底部文字,x显示在中间,y=顶部QR code 10的高度。encode ('png ',{ quality :90 });}) .catch(e=console . error(e));};genQrImage函数接收两个参数,文本是显示在二维码底部的文本,url是要生成的二维码的地址。source.png是给定的背景图片,msyh.ttf是微软雅黑的字体文件。

基本思想是通过图像库加载预先指定的背景图片,然后通过计算出的起点坐标在背景图片上绘制二维码图片和文字。最后,图片将通过编码方法输出到缓冲区,或者通过保存方法保存到服务器。具体用法可以查看github上的文档。

Mysharerimage :函数*(下一步){var _ text='联系人:xxx手机号码:1320000000 ';var _ URL=' http://www . cn blogs.com/jaxu ';var _ buffer=yield Bizutils . Genqrimage(_ text,_ URL);this . RES . setheader(' Content-type ',' image/png ');this.body=_ buffer接下来屈服;}最终结果:

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+