H5图片选取器

最近的项目都有拍照上传的功能,所以把这个功能单独抽出来总结积累一下,以便以后复用。
功能:图片选取,滑动预览,删除,异步上传(压缩)
工具Swiper插件
代码https://github.com/jackLeong/imagePicker

图片压缩上传代码:

function send(){
var url_send = "http://......";
var scale = 3; //缩放比例
$('.forIndex img').each(function(index,ele){
        var canvas = document.createElement("canvas");
        var image = this;
         var w = image.naturalWidth;
         var h = image.naturalHeight
        canvas.width = w/scale;
        canvas.height = h/scale; 
        // 坐标(0,0) 表示从此处开始绘制,相当于偏移。 
        canvas.getContext("2d").drawImage(image,0,0,w,h,0,0,w/scale,h/scale); 
        var dataURL = canvas.toDataURL("image/png");
        var blob = convertBase64UrlToBlob(dataURL);
        var file = new File([blob],(new Date()).valueOf()+'.png',{type:"image/png"});
        var formData = new FormData();
        formData.append('imgData',file);

        $.ajax({
          url: url_send,
          type: 'POST',
          data: formData,
          cache: false,
          async:true,
          processData: false,
         contentType: false,
          success: function (data) {
          },
          error: function () {
          }
        });
    });
}

function convertBase64UrlToBlob(urlData){
    var decoded=window.atob(urlData.split(',')[1]);   //去掉Data URL的头部信息,window.atob解码base64,返回字符串(unicode字符串)对象
    debugger;
    console.log(decoded);
    var typedArr = new ArrayBuffer(decoded.length);   //开辟字节数大小为decoded.length的类型化数组,相当一片内存空间
    var uint8Arr = new Uint8Array(typedArr);          //创建一个指向typedArr的Uint8视图
    for(var i=0;i<decoded.length;i++){
        uint8Arr[i] = decoded.charCodeAt(i);          //charCodeAt返回unicode字符编码, uint8Arr,typeArr指向同一地址,
    }
    return new Blob( [uint8Arr] , {type : 'image/png'});
}

效果

01.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值