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

 更新时间:2019年07月15日 14:59:45   作者:ChorKiu  
这篇文章主要为大家详细介绍了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);
 
 });

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

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

相关文章

  • Electron点击穿透不规则窗体的透明区域的实现

    Electron点击穿透不规则窗体的透明区域的实现

    本文主要介绍了Electron点击穿透不规则窗体的透明区域的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 教你修改element-ui源码给el-dialog添加全屏功能

    教你修改element-ui源码给el-dialog添加全屏功能

    el-dialog组件提供了fullscreen功能,但是无法满足业务需求。系统使用了许多dialog,不方便重新封装dialog组件,故直接对源码进行修改,这篇文章主要介绍了修改element-ui源码给el-dialog添加全屏功能,需要的朋友可以参考下
    2022-11-11
  • 使用mpvue搭建一个初始小程序及项目配置方法

    使用mpvue搭建一个初始小程序及项目配置方法

    这篇文章主要介绍了使用mpvue搭建一个初始小程序及项目配置方法,需要的朋友可以参考下
    2018-12-12
  • js判断当前页面在移动设备还是在PC端中打开

    js判断当前页面在移动设备还是在PC端中打开

    这篇文章主要介绍了js判断当前页面在移动设备还是在PC端中打开的相关资料,需要的朋友可以参考下
    2016-01-01
  • js动态切换图片的方法

    js动态切换图片的方法

    这篇文章主要介绍了js动态切换图片的方法,包含完整的css文件与js文件实现技巧,非常具有实用价值,需要的朋友可以参考下
    2015-01-01
  • javascript滚轮事件基础实例讲解(37)

    javascript滚轮事件基础实例讲解(37)

    这篇文章主要为大家详细介绍了javascript滚轮事件基础实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • js使用i18n实现页面国际化的方法

    js使用i18n实现页面国际化的方法

    本篇文章主要介绍了js使用i18n实现页面国际化的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • JavaScript深入理解系列之call与apply

    JavaScript深入理解系列之call与apply

    Function.prototype.call和Function.prototype.apply都是非常常用的方法,它们的作用一模一样,区别仅在于传入参数形式的不同,下面这篇文章主要介绍了JavaScript深入理解系列之call与apply的相关资料,需要的朋友可以参考下
    2022-04-04
  • openlayers4实现点动态扩散

    openlayers4实现点动态扩散

    这篇文章主要为大家详细介绍了openlayers4实现的点动态扩散,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • javascript操作cookie方法函数集合

    javascript操作cookie方法函数集合

    很多朋友需要使用到cookies操作,脚本之家以前也发表了不少相关的文章。这篇文章,虽然乱了点,但知识点比较多。
    2010-07-07

最新评论