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 纯数字不重复排列的另类方法
Jul 17 Javascript
如何使用Jquery获取Form表单中被选中的radio值
Aug 09 Javascript
js使用eval解析json(js中使用json)
Jan 17 Javascript
jQuery右下角旋转环状菜单特效代码
Aug 10 Javascript
JavaScript数组的栈方法与队列方法详解
May 26 Javascript
jQuery向父辈遍历的简单方法
Sep 18 Javascript
深入理解bootstrap框架之入门准备
Oct 09 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
Dec 01 Javascript
js实现手机web图片左右滑动效果
Dec 29 Javascript
看看“疫苗查询”小程序有温度的代码
Jul 31 Javascript
详解vue-video-player使用心得(兼容m3u8)
Aug 23 Javascript
Vue 实现一个命令式弹窗组件功能
Sep 25 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
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
jQuery maxlength文本字数限制插件
2010/04/16 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
window.parent与window.openner区别介绍
2012/04/12 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
bootstrap网页框架的使用方法
2016/05/10 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
老生常谈JavaScript中的this关键字
2016/10/01 Javascript
基于jPlayer三分屏的制作方法
2016/12/21 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
详解vue2.0的Element UI的表格table列时间戳格式化
2017/06/13 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
MUI顶部选项卡的用法(tab-top-webview-main)详解
2017/10/08 Javascript
五步轻松实现zTree的使用
2017/11/01 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
Python发送Email方法实例
2014/08/21 Python
Python开发如何在ubuntu 15.10 上配置vim
2016/01/25 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
python最长回文串算法
2018/06/04 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python判断设备是否联网的方法
2018/06/29 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
tensorflow 模型权重导出实例
2020/01/24 Python
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
社区科普工作方案
2014/06/03 职场文书
2014年审计工作总结
2014/11/17 职场文书
微信早安问候语
2015/11/10 职场文书
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers