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 Firefox与IE 替换节点的方法
Feb 24 Javascript
jquery load()在firefox(火狐)下显示不正常的解决方法
Apr 05 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
Jun 19 Javascript
jQuery实现的多滑动门,多选项卡效果代码
Mar 28 Javascript
功能强大的Bootstrap组件(结合js)
Aug 03 Javascript
JS实现的走迷宫小游戏完整实例
Jul 19 Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
Vue.js轮播图走马灯代码实例(全)
May 08 Javascript
使用Vue 自定义文件选择器组件的实例代码
Mar 04 Javascript
Javascript摸拟自由落体与上抛运动原理与实现方法详解
Apr 08 Javascript
JS深入学习之数组对象排序操作示例
May 01 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字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
比较好用的PHP防注入漏洞过滤函数代码
2012/04/11 PHP
PHP实现取得HTTP请求的原文
2014/08/18 PHP
PHP中比较时间大小实例
2014/08/21 PHP
php提示Failed to write session data错误的解决方法
2014/12/17 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
插件:检测javascript的内存泄漏
2007/03/04 Javascript
一个符号插入器 中用到的js代码
2007/09/04 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
Jquery常用的方法汇总
2015/09/01 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
vue.js学习笔记:如何加载本地json文件
2017/01/17 Javascript
vue实例中data使用return包裹的方法
2018/08/27 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
vue中使用[provide/inject]实现页面reload的方法
2019/09/30 Javascript
vuex分模块后,实现获取state的值
2020/07/26 Javascript
Vue中watch、computed、updated三者的区别及用法
2020/07/27 Javascript
[04:11]2014DOTA2国际邀请赛 CIS遗憾出局梦想不灭
2014/07/09 DOTA
[01:04:05]VG vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python实现决策树、随机森林的简单原理
2018/03/26 Python
学习python分支结构
2019/05/17 Python
用python给自己做一款小说阅读器过程详解
2019/07/11 Python
pygame实现打字游戏
2021/02/19 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
俄罗斯园林植物网上商店:Garshinka
2020/07/16 全球购物
2014年师德师风学习材料
2014/05/16 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
CSS变量实现主题切换的方法
2021/06/23 HTML / CSS
Web应用开发TypeScript使用详解
2022/05/25 Javascript