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 相关文章推荐
javascript 客户端验证上传图片的大小(兼容IE和火狐)
Aug 15 Javascript
js模拟类继承小例子
Jul 17 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
thinkphp实现无限分类(使用递归)
Dec 19 Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 Javascript
JS传参及动态修改页面布局
Apr 13 Javascript
详解为Bootstrap Modal添加拖拽的方法
Jan 05 Javascript
JS设计模式之命令模式概念与用法分析
Feb 06 Javascript
vue 2.8.2版本配置刚进入时候的默认页面方法
Sep 21 Javascript
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
Jan 15 Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
May 10 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实现高效获取图片尺寸的方法
2014/12/12 PHP
Linux下编译redis和phpredis的方法
2016/04/07 PHP
javascript 拷贝节点cloneNode()使用介绍
2014/04/03 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
JS中frameset框架弹出层实例代码
2016/04/01 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
JS实现的透明度渐变动画效果示例
2018/04/28 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
Vue+Express实现登录注销功能的实例代码
2019/05/05 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
Python Socket编程入门教程
2014/07/11 Python
python监控文件或目录变化
2016/06/07 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
2018/01/09 Python
对numpy中array和asarray的区别详解
2018/04/17 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
python实现机器学习之多元线性回归
2018/09/06 Python
python一键去抖音视频水印工具
2018/09/14 Python
Ubuntu下Anaconda和Pycharm配置方法详解
2019/06/14 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
CSS3 flex布局之快速实现BorderLayout布局
2015/12/03 HTML / CSS
主管竞聘书范文
2014/03/31 职场文书
公证委托书模板
2014/04/03 职场文书
《晚上的太阳》教学反思
2014/04/23 职场文书
装修活动策划方案
2014/08/27 职场文书
2014年小学体育工作总结
2014/12/11 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
围城读书笔记
2015/06/26 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书
2015年幼师个人工作总结
2015/10/15 职场文书
phpQuery解析HTML乱码问题(补充官网未列出的乱码解决方案)
2021/04/01 PHP
Python作用域和名称空间的详细介绍
2022/04/13 Python