基于zepto.js简单实现上传图片


Posted in Javascript onJune 21, 2016

效果如下:

基于zepto.js简单实现上传图片

html: 

<div class="otherPic">
    <div id="showOtherImage"></div>
    <span class="pull-left position_relative" id="openIdCardImg">
    <span class="icon color-blue addPic"></span>
    <input type="file" class="yy_inputFile" id="other_inputFile" name="reasonImg" />
    </span>
   </div>
.basicInfo .item{ padding:.5rem .5rem 0; border-top:.3rem solid #eeeeee;}
.basicInfo li{ overflow:hidden; margin-bottom:.5rem;line-height:2.1rem; border-bottom:1px solid #e3e3e3;}
.basicInfo li:last-child{ border-bottom:none;}
.basicInfo input[type="text"]{ height:2rem; line-height:2rem;}
.basicInfo textarea{ height:8rem; line-height:1.5rem;}
.basicInfo .otherPic{ min-height:3rem;}
.basicInfo .otherPic .addPic{ height:3rem; line-height:3rem; font-size:3rem; margin-bottom:.5rem;}
.basicInfo .otherPic img{ margin:0 .5rem .5rem 0; width:3rem; height:3rem; vertical-align:top; border:1px solid #ddd;}
.basicInfo .yy_inputFile{ position:absolute; top:0; left:0; width:3rem; height:3rem; opacity:0;}
.basicInfo .aboutPic{ margin-bottom:.5rem; line-height:1.5rem; }

js: 

var img_arr = new Array();
 //相关图片
 $(page).on('change','#other_inputFile',function () {
  $(this).resizeImage({
  that:this,
  cutWid:'',
  quality:0.6,
  limitWid:710,
  success:function (data) {
   var len = $('#showOtherImage').find('img').size();
   img_arr[len] = data.base64;
   var img = '<div class="position_relative display-inlineBlock" style="float:left;">' +
   '<img src="' + img_arr[len] + '">' +
   '<span class="icon deletedImages" sid="' +len+ '" id="other_img_'+len+'"></span>'+
   '</div>';
   $('#showOtherImage').append(img);
   if(img_arr.length == 9){
   $('#openIdCardImg').hide();
   return false;
   }
  }
  });
  this.value = '';
 });

 //删除相关图片
 $(page).on('click','.deletedImages',function () {
  var sid = $(this).attr('sid');

  img_arr.splice(sid,1);
  $(this).parent().remove();

  $('#showOtherImage').html('');
  for( var i=0; i < img_arr.length; i++) {
  var img = '<div class="position_relative display-inlineBlock" style="float:left;">' +
   '<img src="' + img_arr[i] + '">' +
   '<span class="icon deletedImages" sid="' +i+ '" id="other_img_' +i+ '"></span>'+
   '</div>';
  $('#showOtherImage').append(img);
  }

  if(img_arr.length < 9){
  $('#openIdCardImg').show();
  }else{
  $('#openIdCardImg').hide();
  }
 });

/*
 * 裁剪图片
 * $(id).resizeImage({
 * that:this, //当前图片对象
 * cutWid:'', //裁剪尺寸
 * quality:0.6, //图片质量0~1
 * limitWid:400, //最小宽度
 * success:function (data) {
 * do something... 
 * }
 * })
 *
 * */
 $.fn.resizeImage = function (obj) {
 var file = obj.that.files[0];
 var URL = window.URL || window.webkitURL;
 var blob = URL.createObjectURL(file);
 var base64;

 var img = new Image();
 img.src = blob;

 if(!/image\/\w+/.test(obj.that.files[0].type)){
  $.toast("请上传图片!",1000);
  return false;
 }

 img.onload = function() {
  if(img.width < obj.limitWid){
  $.toast('图片宽度不得小于'+ obj.limitWid +'px',1000);
  return false;
  }
  var that = this;

  //生成比例
  var w,scale,h = that.height;
  if(obj.cutWid == ''){
  w = that.width;
  }else{
  w = obj.cutWid;
  }
  scale = w / h;
  h = w / scale;

  //生成canvas
  var canvas = document.createElement('canvas');
  var ctx = canvas.getContext('2d');
  $(canvas).attr({
  width: w,
  height: h
  });
  ctx.drawImage(that, 0, 0, w, h);

  // 生成base64
  base64 = canvas.toDataURL('image/jpeg', obj.quality || 0.8);
  var result = {
  base64:base64
  };

  //成功后的回调
  obj.success(result);
 };
 };

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

Javascript 相关文章推荐
对采用动态原型方式无法展示继承机制得思考
Dec 04 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
Aug 01 Javascript
javascript Array 数组常用方法
Apr 05 Javascript
vue,angular,avalon这三种MVVM框架优缺点
Apr 27 Javascript
深入浅出讲解ES6的解构
Aug 03 Javascript
炫酷的js手风琴效果
Oct 13 Javascript
jQuery实现的购物车物品数量加减功能代码
Nov 16 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
Oct 31 Javascript
Vue修改mint-ui默认样式的方法
Feb 03 Javascript
JS实现图片上传多次上传同一张不生效的处理方法
Aug 06 Javascript
node读写Excel操作实例分析
Nov 06 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
Jul 19 Javascript
第一篇初识bootstrap
Jun 21 #Javascript
JavaScript实现相册弹窗功能(zepto.js)
Jun 21 #Javascript
省市选择的简单实现(基于zepto.js)
Jun 21 #Javascript
JavaScript实现移动端滑动选择日期功能
Jun 21 #Javascript
bootstrap学习笔记之初识bootstrap
Jun 21 #Javascript
Javascript实现图片加载从模糊到清晰显示的方法
Jun 21 #Javascript
Javascript类型系统之String字符串类型详解
Jun 21 #Javascript
You might like
PHP APC缓存配置、使用详解
2014/03/06 PHP
PHP+AJAX实现投票功能的方法
2015/09/28 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
JavaScript判断DOM何时加载完毕的技巧
2012/11/11 Javascript
js获取html参数及向swf传递参数应用介绍
2013/02/18 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
Bootstrap3学习笔记(三)之表格
2016/05/20 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
微信小程序HTTP接口请求封装代码实例
2019/09/05 Javascript
Node.js 实现抢票小工具 &amp; 短信通知提醒功能
2019/10/22 Javascript
Python的迭代器和生成器使用实例
2015/01/14 Python
python+django快速实现文件上传
2016/10/24 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
Python如何计算语句执行时间
2019/11/22 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
Python datetime模块使用方法小结
2020/06/18 Python
微软加拿大官方网站:Microsoft Canada
2019/04/28 全球购物
局域网定义和特性
2016/01/23 面试题
修理厂厂长岗位职责
2014/01/30 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
应届毕业生求职信范文
2014/07/07 职场文书
2015入党自传格式范文
2015/06/26 职场文书
Nginx配置并兼容HTTP实现代码解析
2021/03/31 Servers
SQL Server中锁的用法
2022/05/20 SQL Server