基于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 cookies操作集合
Apr 12 Javascript
Javascript异步表单提交,图片上传,兼容异步模拟ajax技术
May 10 Javascript
工作需要写的一个js拖拽组件
Jul 28 Javascript
浅析JavaScript中两种类型的全局对象/函数
Dec 05 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
Dec 29 Javascript
jQuery DOM插入节点操作指南
Mar 03 Javascript
jQuery实现底部浮动窗口效果
Sep 07 Javascript
Angular之toDoList的实现代码示例
Dec 02 Javascript
浅析Vue中method与computed的区别
Mar 06 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
Jun 18 jQuery
微信小程序上传图片并等比列压缩到指定大小的实例代码
Oct 24 Javascript
js实现九宫格布局效果
May 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
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
php生成图片验证码的方法
2016/04/15 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
thinkPHP5框架auth权限控制类与用法示例
2018/06/12 PHP
PHP序列化和反序列化深度剖析实例讲解
2020/12/29 PHP
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
2009/10/24 Javascript
Javascript调用C#代码
2011/01/17 Javascript
jquery操作select option 的代码小结
2011/06/21 Javascript
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
js判断日期时间有效性的方法
2015/10/24 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
初探js和简单隐藏效果的实例
2017/11/23 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
ES6中定义类和对象的方法示例
2019/07/31 Javascript
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
Python编写一个闹钟功能
2017/07/11 Python
Python读取英文文件并记录每个单词出现次数后降序输出示例
2018/06/28 Python
Python人脸识别第三方库face_recognition接口说明文档
2019/05/03 Python
在Mac中PyCharm配置python Anaconda环境过程图解
2020/03/11 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
django实现后台显示媒体文件
2020/04/07 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
NARS化妆品官方商店:美国彩妆品牌
2017/08/26 全球购物
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
餐饮部总监岗位职责范文
2014/02/13 职场文书
技校毕业生自荐信
2014/06/03 职场文书
大班亲子运动会方案
2014/06/10 职场文书
中国梦口号
2014/06/13 职场文书
单位员工收入证明样本
2014/10/09 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
消夏晚会主持词
2015/06/30 职场文书