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第一课
Feb 27 Javascript
jQuery 开天辟地入门篇一
Dec 09 Javascript
jQuery选择没有colspan属性的td的代码
Jul 06 Javascript
Javascript获取当前日期的农历日期代码
Oct 08 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
BootStrapValidator校验方式
Dec 19 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
Aug 17 Javascript
JS中图片压缩的方法小结
Nov 14 Javascript
基于JSONP原理解析(推荐)
Dec 04 Javascript
vue的toast弹窗组件实例详解
May 14 Javascript
详解ES6中的三种异步解决方案
Jun 28 Javascript
JS随机密码生成算法
Sep 23 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仿ZOL分页类代码
2008/10/02 PHP
PHP之sprintf函数用法详解
2014/11/12 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
JavaScript中的类继承
2010/11/25 Javascript
window.onload和$(function(){})的区别介绍
2013/10/30 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
jQuery中:first-child选择器用法实例
2014/12/31 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
JS实现左右无缝轮播图代码
2016/05/01 Javascript
javascript执行环境及作用域详解
2016/05/05 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
Angular4项目中添加i18n国际化插件ngx-translate的步骤详解
2017/07/02 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
ant design pro中可控的筛选和排序实例
2020/11/17 Javascript
[05:46]2018完美盛典-《同梦共竞》
2018/12/17 DOTA
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
项目经理岗位职责
2013/11/11 职场文书
竞聘上岗演讲
2014/05/19 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
2016大学自主招生推荐信范文
2015/03/23 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python