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 相关文章推荐
Prototype使用指南之form.js
Jan 10 Javascript
jquery 应用代码 方便的排序功能
Feb 06 Javascript
用JQuery在网页中实现分隔条功能的代码
Aug 09 Javascript
js中的this关键字详解
Sep 25 Javascript
JavaScript实现简单的时钟实例代码
Nov 23 Javascript
jQuery中outerHeight()方法用法实例
Jan 19 Javascript
javascript中href和replace的比较(详解)
Nov 25 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
Dec 08 Javascript
文件上传的几个示例分享【推荐】
Dec 16 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 Javascript
在Web关闭页面时发送Ajax请求的实现方法
Mar 07 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
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
Apache服务器无法使用的解决方法
2013/05/08 PHP
php常用字符串比较函数实例汇总
2014/11/24 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
PHP实现创建微信自定义菜单的方法示例
2017/07/14 PHP
PHP+jQuery实现双击修改table表格功能示例
2019/02/21 PHP
php的单例模式及应用场景详解
2021/02/27 PHP
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
js实现固定宽高滑动轮播图效果
2017/01/13 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
详解处理bootstrap4不支持远程静态框问题
2018/07/20 Javascript
详解react阻止无效重渲染的多种方式
2018/12/11 Javascript
在Vue项目中使用jsencrypt.js对数据进行加密传输的方法
2019/04/17 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
一篇文章带你从零快速上手Rollup
2020/09/07 Javascript
Python中apply函数的用法实例教程
2014/07/31 Python
python通过加号运算符操作列表的方法
2015/07/28 Python
Python随机生成手机号、数字的方法详解
2017/07/21 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
python 矢量数据转栅格数据代码实例
2019/09/30 Python
pandas抽取行列数据的几种方法
2020/12/13 Python
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
JAVA软件工程师测试题
2014/07/25 面试题
管理科学大学生求职信
2013/11/13 职场文书
大学生职业生涯规划方案
2014/01/03 职场文书
六月份红领巾广播稿
2014/02/03 职场文书
家长对老师的感言
2014/03/11 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
2014年财务人员工作总结
2014/11/11 职场文书
Python基础之操作MySQL数据库
2021/05/06 Python
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL