基于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代码判断IE6,IE7,IE8,IE9的函数代码
Aug 02 Javascript
jQuery获取checkbox选中的值
Jan 28 Javascript
AngularJS 最常用的功能汇总
Feb 17 Javascript
微信小程序 触控事件详细介绍
Oct 17 Javascript
微信小程序 本地存储及登录页面处理实例详解
Jan 11 Javascript
Vuejs 组件——props数据传递的实例代码
Mar 07 Javascript
Angular 4依赖注入学习教程之ValueProvider的使用(七)
Jun 04 Javascript
Vue脚手架的简单使用实例
Jul 10 Javascript
JavaScript使用小插件实现倒计时的方法讲解
Mar 11 Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
Oct 11 Javascript
JavaScript点击按钮生成4位随机验证码
Jan 28 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+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
Bootstrap下拉菜单样式
2017/02/07 Javascript
JS获取子、父、兄节点方法小结
2017/08/14 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
python遍历数组的方法小结
2015/04/30 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Django基础之Model操作步骤(介绍)
2017/05/27 Python
详解PyTorch批训练及优化器比较
2018/04/28 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
Python中私有属性的定义方式
2020/03/05 Python
django 链接多个数据库 并使用原生sql实现
2020/03/28 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
Python是什么 Python的用处
2020/05/26 Python
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
Servlet如何得到客户端机器的信息
2014/10/17 面试题
机关办公室岗位职责
2014/04/16 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
运动会广播稿150字(9篇)
2014/09/20 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
《最后一头战象》教学反思
2016/02/16 职场文书