6

6
 首页 > 作文

前端压缩上传图片

更新时间:2023-04-03 14:27:05 阅读: 评论:0

  1 <!doctype html>  2 <html>  3   好的it培训机构4 <head&g监督英文t;  5     <meta chart="utf-8">  6     <title>前端压缩上传图片</title>  7     <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>  8 </head>  9  10 <body> 11     <input type="fil蛙泳世界纪录e" id="picfile" onchange="readfile(this)" /> 12     <img id="img" src="" alt="" /> 13     <script> 14         function readfile(obj) { 15             var file = obj.files[0]; 16             //判断类型是不是图片  17             if (!/image\/\w+/.test(file.type)) { 18                 alert("请确保文件为图像类型"); 19                 return fal; 20             } 21             var reader = new filereader(); 22             reader.readasdataurl(file); 23             reader.onload = function(e) { 24                 dealimage(this.result, { quality: 0.5 }, function(ba) { 25                     //调用 26                     var blob = dataurltoblob(ba); 27                     var newfile = new file([blob], file.name, { type: file.type }); 28                     console.log(newfile) 29  30                     let r = new filereader(); //本地预览 31                     r.onload = function() { 32                         $('#img').attr("src", r.result);; 33                     } 34                     r.readasdataurl(newfile); //ba64 35  36                     // upload(newfile); 37                 }); 38             } 39         } 40  41         //将ba64转换为blob 42         function dataurltoblob(dataurl) { 43             var arr = dataurl.split(','), 44                 mime = arr[0].match(/:(.*?);/)[1], 45                 bstr = atob(arr[1]), 46                 n = bstr.length, 47                 u8arr = new uint8array(n); 48             while (n--) { 49                 u8arr[n] = bstr.charcodeat(n); 50             } 51             return new blob([u8arr], { type: mime }); 52         } 53  54  55         function upload(file) { 56             var that = this; 57             // 创建form对象 58             let param = ne赠医生锦旗w formdata(); 59             // 通过append向form对象添加数据 60             param.append('img', file); 61             // 文件大小 62             param.append('size', file.size); 63             for (var n in that.params) { 64                 param.append(n, that.params[n]); 65             } 66              67             // 创建ajax 68             var xhr = new xmlhttprequest(); 69  70             xhr.onload = function() { 71                 console.log(xhr.respontext) 72             } 73             xhr.open("post", "yourapi", true); 74  75             // 发送表单数据 76             xhr.nd(param); 77         } 78         /** 79          * 图片压缩,默认同比例压缩 80          * @param {object} path 81          * pc端传入的路径可以为相对路径,但是在移动端上必须传入的路径是照相图片储存的绝对路径 82          * @param {object} obj 83          * obj 对象 有 width, height, quality(0-1) 84          * @param {object} callback 85          * 回调函数有一个参数,ba64的字符串数据 86          */ 87         function dealimage(path, obj, callback) { 88             var img = new image(); 89             img.src = path; 90             img.onload = function() { 91                 var that = this; 92                 // 默认按比例压缩 93                 var w = that.width, 94                     h = that.height, 95                     scale = w / h; 96                亚热带季风 w = obj.width || w; 97                 h = obj.height || (w / scale); 98                 var quality = obj.quality || 0.7; // 默认图片质量为0.7 99                 //生成canvas100                 var canvas = document.createelement('canvas');101                 var ctx = canvas.getcontext('2d');102                 // 创建属性节点103                 var anw = document.createattribute("width");104                 anw.nodevalue = w;105                 var anh = document.createattribute("height");106                 anh.nodevalue = h;107                 canvas.tattributenode(anw);108                 canvas.tattributenode(anh);109                 ctx.drawimage(that, 0, 0, w, h);110                 // 图像质量111                 if (obj.quality && obj.quality <= 1 && obj.quality > 0) {112                     quality = obj.quality;113                 }114                 // quality值越小,所绘制出的图像越模糊115                 var ba64 = canvas.todataurl('image/jpeg', quality);116                 // 回调函数返回ba64的值117                 callback(ba64);118             }119         }120     </script>121 </body>122 123 </html>

本文发布于:2023-04-03 14:27:03,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/52009c85cec1c33ea4e2a8546b29c122.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:前端压缩上传图片.doc

本文 PDF 下载地址:前端压缩上传图片.pdf

标签:路径   图片   图像   对象
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图
  • 我要关灯
    我要开灯
  • 返回顶部