基于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 Tips 使用DocumentFragment加快DOM渲染速度
Jun 28 Javascript
jQuery的实现原理的模拟代码 -5 Ajax
Aug 07 Javascript
js实现图片轮换效果代码
Apr 16 Javascript
用jquery方法操作radio使其默认选项是否
Sep 10 Javascript
Javascript基础教程之argument 详解
Jan 18 Javascript
Jquery简单分页实现方法
Jul 24 Javascript
深入浅析javascript立即执行函数
Oct 23 Javascript
利用jquery制作滚动到指定位置触发动画
Mar 26 Javascript
浅谈原生JS中的延迟脚本和异步脚本
Jul 12 Javascript
详解webpack多页面配置记录
Jan 22 Javascript
javacript replace 正则取字符串中的值并替换【推荐】
Sep 13 Javascript
原生JS实现简单的无缝自动轮播效果
Sep 26 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实现插入排序?
2013/04/10 PHP
php ZipArchive压缩函数详解实例
2013/11/06 PHP
Yii基于数组和对象的Model查询技巧实例详解
2015/12/28 PHP
在 Laravel 中 “规范” 的开发短信验证码发送功能
2017/10/26 PHP
jquery each()源代码
2011/02/14 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
JavaScript各类型的关系图解
2015/10/16 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
微信小程序自定义导航栏
2018/12/31 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
JavaScript实现Excel表格效果
2020/02/07 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
python itchat给指定联系人发消息的方法
2019/06/11 Python
Django model update的多种用法介绍
2020/03/28 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
python如何编写win程序
2020/06/08 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
Python如何使用input函数获取输入
2020/08/06 Python
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
100%法国制造的游戏和玩具:Les Jouets Français
2021/03/02 全球购物
大专毕业生简历的自我评价
2013/10/20 职场文书
家长给幼儿园的表扬信
2014/01/09 职场文书
小学生暑假感言
2014/02/06 职场文书
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
Mysql事务索引知识汇总
2022/03/17 MySQL
MYSQL优化之数据表碎片整理详解
2022/04/03 MySQL
Windows 64位 安装 mysql 8.0.28 图文教程
2022/04/19 MySQL