基于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 相关文章推荐
js实现DIV的一些简单控制
Jun 04 Javascript
jquery星级插件、支持页面中多次使用
Mar 25 Javascript
javascript实现日历控件(年月日关闭按钮)
Dec 12 Javascript
js实现的点击div区域外隐藏div区域
Jun 30 Javascript
原生javascript实现简单的datagrid数据表格
Jan 02 Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 Javascript
JavaScript函数节流和函数防抖之间的区别
Feb 15 Javascript
利用vue开发一个所谓的数独方法实例
Dec 21 Javascript
vue-cli配置flexible过程详解
Jul 04 Javascript
微信小程序可滑动月日历组件使用详解
Oct 21 Javascript
JavaScript console的使用方法实例分析
Apr 28 Javascript
jquery实现有过渡效果的tab切换
Jul 17 jQuery
第一篇初识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
如何分别全角和半角以避免乱码
2006/10/09 PHP
PHP5+UTF8多文件上传类
2008/10/17 PHP
php数组函数序列之array_push() 数组尾部添加一个或多个元素(入栈),返回新长度。
2011/11/07 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
Aster vs Newbee BO5 第三场2.19
2021/03/10 DOTA
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
关于ES6的六个小特性(二)
2017/02/20 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
js使用文档就绪函数动态改变页面内容示例【innerHTML、innerText】
2019/11/07 Javascript
Vue+ElementUI table实现表格分页
2019/12/14 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[56:00]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第一局
2016/03/05 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
python3抓取中文网页的方法
2015/07/28 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
TensorFLow 数学运算的示例代码
2020/04/21 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
Python爬虫中Selenium实现文件上传
2020/12/04 Python
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
路政管理专业个人自荐信范文
2013/11/30 职场文书
应届大学生自荐信
2013/12/05 职场文书
小班重阳节活动方案
2014/02/08 职场文书
车间机修工岗位职责
2014/02/28 职场文书
期中考试反思800字
2014/05/01 职场文书
体育活动总结
2015/02/04 职场文书
2015年电厂工作总结范文
2015/05/13 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
JavaScript的Set数据结构详解
2022/02/18 Javascript
Python Pandas 删除列操作
2022/03/16 Python