js canvas实现二维码和图片合成的海报


Posted in Javascript onNovember 19, 2020

本文实例为大家分享了canvas二维码和图片合成海报的具体代码,供大家参考,具体内容如下

思路:在微信中登录,后台传来的是一个链接、一个名字、一张图片。把图片当做背景,画满整个画布。之后需要把链接转为二维码,使用jq.qrcode转化,转化完成后是一个canvas,把这个canvas再转成一张图片,画到大的画布上。把名字画到画布上。把整张画布转为图片。

一、定义画布和合成海报的img

<style type="text/css">
#canbox {
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 bottom: 0;
 left: 0;
}
.canimg {
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 bottom: 0;
 left: 0;
}
</style>
<div id="qrcode">
 
</div>
<div id="canbox">
 <canvas id="myCanvas" width="" height=""></canvas>
</div>
<img class="canimg" src=""/>

二、用jquery.qrcode把网址变成二维码

后台传过来的是网址,需要转为二维码,二维码也是canvas,需要把二维码转为图片

$("#qrcode").qrcode({
 width: 72, //宽度 
 height: 72, //高度 
 text: res.data.poster_qrcode, //任意内容 
});

三、把图片画到画布上,需要占满全屏

//画海报
var width = document.getElementById("canbox").offsetWidth; //宽度 
var height = document.getElementById("canbox").offsetHeight; // 高度
var c = document.getElementById("myCanvas");
c.width = width
c.height = height
var ctx = c.getContext("2d");
//首先画上背景图
var img = new Image();
img.src = this.list.poster;
img.setAttribute("crossOrigin", 'Anonymous')
var x_bot = height - 44 //画上名字
ctx.font = "19px Georgia";
//画上二维码
function convertCanvasToImage(canvas) {
 var image = new Image();
 image.src = canvas.toDataURL("image/png");
 return image;
}
var mycans = $('canvas')[1];//二维码所在的canvas
var codeimg = convertCanvasToImage(mycans)
var xw = width - 72 - 29
var xh = height - 6 - 72
img.onload = function() { //必须等待图片加载完成
 ctx.drawImage(img, 0, 0, width, height); //绘制图像进行拉伸
 ctx.fillText(that.name, 28, x_bot);
 ctx.drawImage(codeimg, xw, xh, 72, 72);
 //绘制完成,转为图片
 setTimeout(function() { //在ios上无法在画完之后取到整个画布内容,加了个settimeout
 var bigcan = $('canvas')[0];
 let images = new Image();
 images.src = bigcan.toDataURL("image/png");
 alert(bigcan.toDataURL("image/png"))
 images.setAttribute("crossOrigin", 'Anonymous')
 $('.canimg').attr('src', bigcan.toDataURL("image/png"))
 }, 0)
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现鼠标悬停图片上时滚动文字说明的方法
Feb 17 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
5种JavaScript脚本加载的方式
Jan 16 Javascript
实例详解display:none与visible:hidden的区别
Mar 30 Javascript
js处理包含中文的字符串实例
Oct 11 Javascript
js中apply和Math.max()函数的问题及区别介绍
Mar 27 Javascript
Vue项目History模式404问题解决方法
Oct 31 Javascript
iview form清除校验状态的实现
Sep 19 Javascript
原生JS实现汇率转换功能代码实例
May 13 Javascript
vue开发简单上传图片功能
Jun 30 Javascript
原生js实现拖拽移动与缩放效果
Aug 24 Javascript
详解@angular/cli 改变默认启动端口两种方式
Nov 29 #Javascript
js实现每日签到功能
Nov 29 #Javascript
Vue.js的复用组件开发流程完整记录
Nov 29 #Javascript
javascript实现考勤日历功能
Nov 29 #Javascript
vsCode安装使用教程和插件安装方法
Aug 24 #Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
Nov 29 #Javascript
简述vue路由打开一个新的窗口的方法
Nov 29 #Javascript
You might like
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
2013/06/18 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
PHP文件与目录操作示例
2016/12/24 PHP
AJAX的使用方法详解
2017/04/29 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
DOM 脚本编程中的兄弟节点
2009/10/31 Javascript
javascript函数以及基础写法100多条实用整理
2013/01/13 Javascript
js中文逗号转英文实现
2014/02/11 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
pyqt4教程之messagebox使用示例分享
2014/03/07 Python
python协程用法实例分析
2015/06/04 Python
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python中pip更新和三方插件安装说明
2018/07/08 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
2019/07/08 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
阿联酋团购网站:Groupon阿联酋
2016/10/14 全球购物
TCP协议通讯的过程和步骤是什么
2015/10/18 面试题
2014政务公开实施方案
2014/02/19 职场文书
美国留学经济担保书
2014/05/20 职场文书
收款委托书
2014/10/14 职场文书
王亚平太空授课观后感
2015/06/12 职场文书
2015年电气技术员工作总结
2015/07/24 职场文书
聘任合同书
2015/09/21 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
公务员岗前培训心得体会
2016/01/08 职场文书
vue el-table实现递归嵌套的示例代码
2022/08/14 Vue.js