基于zepto.js简单实现上传图片
来源: 阅读:3641 次 日期:2016-07-18 16:37:03
温馨提示: 小编为您整理了“基于zepto.js简单实现上传图片”,方便广大网友查阅!

这篇文章主要介绍了基于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);

 };

 };

以上就是本文的全部内容,希望对大家的学习有所帮助

更多信息请查看网络编程
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map