基于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常用函数 不错
Sep 08 Javascript
js 字符串操作函数
Jul 25 Javascript
js左右弹性滚动对联广告代码分享
Feb 19 Javascript
关于Javascript 对象(object)的prototype
May 09 Javascript
jQuery实现的图文高亮滚动切换特效实例
Aug 10 Javascript
基于jquery实现的树形菜单效果代码
Sep 06 Javascript
详解Vuejs2.0之异步跨域请求
Apr 20 Javascript
详解Eslint 配置及规则说明
Sep 10 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
Feb 20 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
vuex实现购物车的增加减少移除
Jun 28 Javascript
Vue父子组件传值的一些坑
Sep 16 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无刷新上传文件实现代码
2011/09/19 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
JavaScript 身份证号有效验证详解及实例代码
2016/10/20 Javascript
Bootstrap下拉菜单Dropdowns的实现代码
2017/03/17 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
Vue中props的使用详解
2018/06/15 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
2018/09/28 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
vue等两个接口都返回结果再执行下一步的实例
2020/09/08 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
javascript实现点击小图显示大图
2020/11/29 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
python字典基本操作实例分析
2015/07/11 Python
python机器学习之神经网络(二)
2017/12/20 Python
python使用json序列化datetime类型实例解析
2018/02/11 Python
python里dict变成list实例方法
2019/06/26 Python
对python中基于tcp协议的通信(数据传输)实例讲解
2019/07/22 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
厨房领班竞聘演讲稿
2014/04/23 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
感谢信范文大全
2015/01/23 职场文书
介绍信如何写
2015/01/31 职场文书
公司行政管理制度范本
2015/08/05 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
2016学习医德医风心得体会
2016/01/25 职场文书