js canvas实现5张图片合成一张图片


Posted in Javascript onJuly 15, 2019

本文具体要实现的效果类似下面这张图片,主题流程大概是,页面上有类似这样布局的结构,点击中间那个紫色的按钮就会生成一张这样的图片,并且能够让用户下载图片的

js canvas实现5张图片合成一张图片

1、首先我们布局页面的时候用的都是图片来布局成这个样子[CSS自己脑补],class为pho-bg这一段是页面开始显示的结构,几张图片定位,按钮在中间的样子。class为photo的就是用来到时候放置生成的图片。canvas就是画布。至于下面的两张图片其实就是按钮的图片和背景图,到时候一并加入画布里面【不过在页面的时候不显示】

<div class="pho-bg">
 <img src="ossweb-img/man-1.png" class="man man-1" id="man-1" alt="">
 <img src="ossweb-img/man-2.png" class="man man-2" id="man-2" alt="">
 <img src="ossweb-img/man-3.png" class="man man-3" id="man-3" alt="">
 <img src="ossweb-img/man-4.png" class="man man-4" id="man-4" alt="">
 <a href="javascript:;" class="btn" title=""></a>
 <img src="ossweb-img/sen.png" class="sen1" id="sen1" alt="">
 <img id="show-pic" alt="">
 </div>
 <div class="photo"></div>
 <canvas id="myCanvas" width="750" height="1180"></canvas>
 <img src="ossweb-img/bg1.jpg" id="bg1" alt="">
 <img src="ossweb-img/btn.png" id="btn1" alt="">

2、重要的是js部分,这里面有几个部分

  • 在点击按钮时隐藏掉本来的页面,显示画布生成的图片
  • canvas.width,canvas.height是设置你生成的图片的大小。举个例子:如果我在canvas的html标签里面设置的width=750,height=1180,但是在js里面设置了canvas.width=500,canvas.height=500,那么生成的图片的大小就会是500*500.
  • 使用createPattern来制作图片的背景图
  • 使用drawImage()来制作组成图片的小元素也就是红、黄、蓝、绿、紫那几张图片
  • 最后用toDataURL()将画布的内容转为图片并且渲染到页面上
$('.btn').click(function() {
 $('.pho-bg').hide();
 // $('#myCanvas').show();
 var man1 = document.getElementById("man-1"),
 man2 = document.getElementById("man-2"),
 man3 = document.getElementById("man-3"),
 man4 = document.getElementById("man-4"),
 sen1 = document.getElementById("sen1"),
 btn1 = document.getElementById("btn1"),
 canvasBg = document.getElementById("bg1");
 
 
 var canvas = document.getElementById("myCanvas");
 ctx = canvas.getContext("2d");
 canvas.width = 750;
 canvas.height = 1180;
 // 制作背景图
 var patBg = ctx.createPattern(canvasBg, "repeat");
 ctx.rect(0, 0, 750, 1180);
 ctx.fillStyle = patBg;
 ctx.fill();
 // 将man1,man2,man3,man4,sen1,btn加入画布
 ctx.drawImage(man1, 0, 0, 341, 474);
 ctx.drawImage(man2, 410, 0, 341, 474);
 ctx.drawImage(man3, 0, 474, 341, 474);
 ctx.drawImage(man4, 410, 474, 341, 474);
 
 ctx.drawImage(sen1, 40, 950, 669, 109);
 ctx.drawImage(btn1, 150, 350, 449, 288);
 var newImg = new Image();
 newImg.src = canvas.toDataURL("image/png");
 
 $('.photo').append(newImg);
 
 });

最后的结果生成的图片就是这样子的

js canvas实现5张图片合成一张图片

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

Javascript 相关文章推荐
国外的为初学者写的JavaScript教程
Jun 09 Javascript
Javascript操作cookie的函数代码
Oct 03 Javascript
javascript 表格内容排序 简单操作示例代码
Jan 03 Javascript
js或jquery实现页面打印可局部打印
Mar 27 Javascript
JavaScript中的prototype.bind()方法介绍
Apr 04 Javascript
禁用Tab键JS代码兼容Firefox和IE
Apr 18 Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 Javascript
分享一款基于jQuery的视频播放插件
Oct 09 Javascript
JS显示日历和天气的方法
Mar 01 Javascript
jquery判断滚动条距离顶部的距离方法
Sep 05 jQuery
JS实现的排列组合算法示例
Jul 16 Javascript
如何使用JavaScript检测空闲的浏览器选项卡
May 28 Javascript
js使用文件流下载csv文件的实现方法
Jul 15 #Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 #Javascript
微信小程序开发技巧汇总
Jul 15 #Javascript
微信小程序中如何计算距离某个节日还有多少天
Jul 15 #Javascript
微信小程序基础教程之worker线程的使用方法
Jul 15 #Javascript
使用vue-router在Vue页面之间传递数据的方法
Jul 15 #Javascript
微信小程序在其他页面监听globalData中值的变化
Jul 15 #Javascript
You might like
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
javascript实现面向对象类的功能书写技巧
2010/03/07 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
基于jQuery的计算文本框字数的代码
2012/06/06 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
Bootstrap3制作搜索框样式的方法
2016/07/11 Javascript
BootStrop前端框架入门教程详解
2016/12/25 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
jQuery实现的背景颜色渐变动画效果示例
2017/03/24 jQuery
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
简单实现js鼠标跟随效果
2020/08/02 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
详解vue-cli中使用rem,vue自适应
2019/05/06 Javascript
node.js中 redis 的安装和基本操作示例
2020/02/10 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
写了个监控nginx进程的Python脚本
2012/05/10 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
python计算两个矩形框重合百分比的实例
2018/11/07 Python
pandas把所有大于0的数设置为1的方法
2019/01/26 Python
python基础教程之while循环
2019/08/14 Python
pytorch中的transforms模块实例详解
2019/12/31 Python
Python爬虫基于lxml解决数据编码乱码问题
2020/07/31 Python
公司活动策划方案
2014/01/13 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
安全标语口号
2014/06/09 职场文书
2014年党员整改措施范文
2014/09/21 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
高中生思想道德自我评价
2015/03/09 职场文书
拿破仑传读书笔记
2015/07/01 职场文书
欢送领导祝酒词
2015/08/12 职场文书
导游词之山东红叶谷
2019/10/31 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python