基于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 相关文章推荐
javascript动画之圆形运动,环绕鼠标运动作小球
Jul 20 Javascript
JQuery入门——事件切换之hover()方法应用介绍
Feb 05 Javascript
jQuery和AngularJS的区别浅析
Jan 29 Javascript
javascript计时器详解
Feb 28 Javascript
XML文件转化成NSData对象的方法
Aug 12 Javascript
js生成随机数的过程解析
Nov 24 Javascript
js实现旋转木马效果
Mar 17 Javascript
对 Vue-Router 进行单元测试的方法
Nov 05 Javascript
JavaScript对象拷贝与赋值操作实例分析
Dec 10 Javascript
原生JavaScript之es6中Class的用法分析
Feb 23 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
Aug 31 Javascript
vue点击按钮实现简单页面的切换
Sep 08 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程序?
2006/12/08 PHP
可定制的PHP缩略图生成程式(需要GD库支持)
2007/03/06 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
用来解析.htgroup文件的PHP类
2012/09/05 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
php命令行写shell实例详解
2018/07/19 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
jQuery 扩展对input的一些操作方法
2009/10/30 Javascript
juqery 学习之五 文档处理 插入
2011/02/11 Javascript
仅IE不支持setTimeout/setInterval函数的第三个以上参数
2011/05/25 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
jQuery中document与window以及load与ready 区别详解
2014/12/29 Javascript
jQuery学习笔记之jQuery中的$
2015/01/19 Javascript
js比较日期大小的方法
2015/05/12 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
jquery中用jsonp实现搜索框功能
2016/10/18 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
jquery实现点击弹出对话框
2020/02/08 jQuery
浅谈python迭代器
2017/11/08 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
Python日期时间对象转换为字符串的实例
2018/06/22 Python
python list多级排序知识点总结
2019/10/23 Python
谈谈Python:为什么类中的私有属性可以在外部赋值并访问
2020/03/05 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
机械专业毕业生推荐信范文
2013/11/25 职场文书
初中同学聚会感言
2014/02/11 职场文书
2014年生产部工作总结
2014/12/17 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
python库Tsmoothie模块数据平滑化异常点抓取
2022/06/10 Python