JavaScript实现图片合成下载的示例


Posted in Javascript onNovember 19, 2020

最近项目一个功能需求,需实现将两张图片合成后下载的一个功能。分析完功能需求后,决定直接使用前端技术来实现。为提高效率,使用插件(html2canvas)配合编写此功能。有关插件(html2canvas)的介绍,这里不多说明,大家可自行网上查阅。以下直接附上效果演示图以及完整代码

效果演示:

JavaScript实现图片合成下载的示例

完整代码:(代码复制可直接使用)

注:最好将代码文件放在服务器环境下运行,以防止插件(html2canvas)出错,这里使用的服务器环境为phpStudy,为本地服务器环境。有关本地服务器有哪些以及下载使用,可自行网上查阅

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>JS实现图片合成下载</title> 
<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> 
<script src="//apps.bdimg.com/libs/jqueryui/1.10.4/jquery-ui.min.js"></script><!--加载jquery ui主要作用是使用其拖拽的功能--> 
<script src="https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.min.js"></script><!--想要图片合成,核心就是加载使用这个插件--> 
<script> 
function BaseImage(imgFile) {//图片1上传的函数方法 
   var f = imgFile.files[0];//获取上传的图片文件 
   var filereader = new FileReader();//新建一个图片对象 
  filereader.onload = function (event) {//图片加载完成后执行的函数 
      var srcpath = event.target.result;//这里获取图片的路径(图片会被转为base6格式) 
      $("#baseimg").attr("src",srcpath);//将获取的图片使用jquery的attr()方法插入到id为baseimg的图片元素里 
   }; 
   filereader.readAsDataURL(f);//读取图片(将插入的图片读取显示出来) 
 } 
 
function StyleImage(imgFile) { //图片2上传的函数方法(原理同上) 
   var f = imgFile.files[0]; 
  var filereader = new FileReader(); 
   filereader.onload = function (event) { 
      var srcpath = event.target.result; 
      $("#styleimg").attr("src",srcpath); 
  }; 
    filereader.readAsDataURL(f); 
 }  
 
$(function() { 
    $( ".drg" ).draggable();//这里使用jquery ui的拖拽方法  draggable();作用是可以让图片2进行拖拽 
}); 
 
function down(){//这个函数是点击下载执行的方法 
   html2canvas($(".whole"),{ //这是使用了html2canvas这个插件的方法,将class为whole的整个节点绘制成画布 
     onrendered:function(canvas){  //画布绘制完成后执行下面内容,function内的canvas这个参数就是已经被绘制成画布 
          var link = document.createElement('a');//创建一个a标签 
          link.download = 'my-image-name.jpg';//a标签增加一个download属性,属性值(my-image-name.jpg)就是合成下载后的文件名 
          link.href = canvas.toDataURL();//canvas.toDataURL()就是画布的路径,将路径赋给a标签的href 
          link.click();//模拟a标签被点击,这样就可以下载了 
     }, 
  }) 
} 
</script> 
</head> 
<body> 
 
<fieldset> 
 <input type="file"  onchange="BaseImage(this)" > 
<legend>上传图1</legend> 
</fieldset> 
<fieldset> 
<input  type="file"  onchange="StyleImage(this)" > 
 <legend>上传图2</legend> 
</fieldset> 
<fieldset> 
 <button onclick="down()" >点击合成下载</button> 
</fieldset> 
 
<span class="whole" style="width: 544px;display: inline-block;position: relative;"> 
<img id="baseimg"  style="width:100%;height:auto;"  > 
<div style="height: 100%;width: 100%;top:0;position: absolute;overflow: hidden;"> 
<div class="drg" style="position: absolute;width:100px;top: 0px;left: 0px;display: inline-block;"> 
<img id="styleimg"  style="width:100%;cursor: pointer;" > 
</div> 
</div> 
</span> 
 
</body> 
</html>

以上就是JavaScript实现图片合成下载的示例的详细内容,更多关于JavaScript 图片合成下载的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
JS Timing
Apr 21 Javascript
JavaScript 比较时间大小的代码
Apr 24 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
Jan 06 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
Mar 10 Javascript
javascript获取作用在元素上面的样式属性代码
Sep 20 Javascript
使用jQuery的attr方法来修改onclick值
Jul 07 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
Koa项目搭建过程详细记录
Apr 12 Javascript
Vue配合iView实现省市二级联动的示例代码
Jul 27 Javascript
深入Node TCP模块的理解
Mar 13 Javascript
JS实现动态无缝轮播
Jan 11 Javascript
JS常见内存泄漏及解决方案解析
May 30 Javascript
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 #Vue.js
vue 插槽简介及使用示例
Nov 19 #Vue.js
微信小程序实现点击导航条切换页面
Nov 19 #Javascript
详解Vue的mixin策略
Nov 19 #Vue.js
微信小程序自定义底部弹出框功能
Nov 18 #Javascript
微信小程序实现底部弹出框
Nov 18 #Javascript
微信小程序实现弹幕墙(祝福墙)
Nov 18 #Javascript
You might like
动易数据转成dedecms的php程序
2007/04/07 PHP
PHP 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
php数据结构与算法(PHP描述) 查找与二分法查找
2012/06/21 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
PHP实现的数据对象映射模式详解
2019/03/20 PHP
PHP中通过getopt解析GNU C风格命令行选项
2019/11/18 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
js 处理URL实用技巧
2010/11/23 Javascript
js操纵跨frame的三级联动select下拉选项实例介绍
2013/05/19 Javascript
js简单实现HTML标签Select联动带跳转
2013/10/23 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
2015/09/24 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
2015/11/02 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
详解Chai.js断言库API中文文档
2018/01/31 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
Python中使用第三方库xlutils来追加写入Excel文件示例
2015/04/05 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
2018/04/05 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
Python实现元素等待代码实例
2019/11/11 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
CSS3区域模块region相关编写示例
2015/08/28 HTML / CSS
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
生产部经理岗位职责
2013/12/16 职场文书
2014全国两会学习心得体会2000字
2014/03/10 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
2014年女职工工作总结
2014/11/27 职场文书
2015年教师党员承诺书
2015/04/27 职场文书
2016年十一促销广告语
2016/01/28 职场文书
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python