基于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 相关文章推荐
IE和Firefox在JavaScript应用中的兼容性探讨
Apr 01 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
Aug 12 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 20 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
JavaScript截取字符串的2个函数介绍
Aug 27 Javascript
AngularJS单选框及多选框实现双向动态绑定
Jan 13 Javascript
10分钟掌握XML、JSON及其解析
Dec 06 Javascript
angular4模块中给标签添加背景图的实现方法
Sep 15 Javascript
jQuery中的for循环var与let的区别
Apr 21 jQuery
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
基于游标的分页接口实现代码示例
Nov 12 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
Sep 06 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
php中this关键字用法分析
2016/12/07 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
整理Javascript基础语法学习笔记
2015/11/29 Javascript
JS如何设置iOS中微信浏览器的title
2016/11/22 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
mui back 返回刷新页面的实例
2017/12/06 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
使用vue的transition完成滑动过渡的示例代码
2018/06/25 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
微信小程序通过websocket实时语音识别的实现代码
2020/08/19 Javascript
使用Python &amp; Flask 实现RESTful Web API的实例
2017/09/19 Python
Python自定义线程类简单示例
2018/03/23 Python
Python3.5基础之NumPy模块的使用图文与实例详解
2019/04/24 Python
python 发送get请求接口详解
2020/11/17 Python
英国知名化妆品网站:Revolution Beauty(原TAM Beauty)
2018/02/28 全球购物
使用索引有什么好处
2016/07/27 面试题
高校学生干部的自我评价分享
2013/11/04 职场文书
经理秘书找工作求职信
2013/12/19 职场文书
小学语文国培感言
2014/03/04 职场文书
化工实习心得体会
2014/09/09 职场文书
展览会邀请函
2015/02/02 职场文书
羊脂球读书笔记
2015/06/30 职场文书
2016年暑期教师培训心得体会
2016/01/09 职场文书
在CSS中使用when/else的方法
2022/01/18 HTML / CSS
德生BCL3000抢先使用感受和评价
2022/04/07 无线电