国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

基于JS實現(xiàn)前端壓縮上傳圖片的實例代碼

2019-11-19 11:34:46
字體:
供稿:網(wǎng)友

具體代碼如下所示:

<!DOCTYPE html><html><head>  <meta charset="UTF-8">  <title>前端壓縮上傳圖片</title>  <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script></head><body>  <input type="file" id="picFile" onchange="readFile(this)" />  <img id="img" src="" alt="" />  <script>    function readFile(obj) {      var file = obj.files[0];      //判斷類型是不是圖片       if (!/image///w+/.test(file.type)) {        alert("請確保文件為圖像類型");        return false;      }      var reader = new FileReader();      reader.readAsDataURL(file);      reader.onload = function(e) {        dealImage(this.result, { quality: 0.5 }, function(base) {          //調(diào)用          var blob = dataURLtoBlob(base);          var newFile = new File([blob], file.name, { type: file.type });          console.log(newFile)          let r = new FileReader(); //本地預(yù)覽          r.onload = function() {            $('#img').attr("src", r.result);;          }          r.readAsDataURL(newFile); //Base64          // upload(newFile);        });      }    }    //將base64轉(zhuǎn)換為blob    function dataURLtoBlob(dataurl) {      var arr = dataurl.split(','),        mime = arr[0].match(/:(.*?);/)[1],        bstr = atob(arr[1]),        n = bstr.length,        u8arr = new Uint8Array(n);      while (n--) {        u8arr[n] = bstr.charCodeAt(n);      }      return new Blob([u8arr], { type: mime });    }    function upload(file) {      var that = this;      // 創(chuàng)建form對象      let param = new FormData();      // 通過append向form對象添加數(shù)據(jù)      param.append('img', file);      // 文件大小      param.append('size', file.size);      for (var n in that.params) {        param.append(n, that.params[n]);      }      // 創(chuàng)建ajax      var xhr = new XMLHttpRequest();      xhr.onload = function() {        console.log(xhr.responseText)      }      xhr.open("POST", "yourapi", true);      // 發(fā)送表單數(shù)據(jù)      xhr.send(param);    }    /**     * 圖片壓縮,默認同比例壓縮     * @param {Object} path     * pc端傳入的路徑可以為相對路徑,但是在移動端上必須傳入的路徑是照相圖片儲存的絕對路徑     * @param {Object} obj     * obj 對象 有 width, height, quality(0-1)     * @param {Object} callback     * 回調(diào)函數(shù)有一個參數(shù),base64的字符串數(shù)據(jù)     */    function dealImage(path, obj, callback) {      var img = new Image();      img.src = path;      img.onload = function() {        var that = this;        // 默認按比例壓縮        var w = that.width,          h = that.height,          scale = w / h;        w = obj.width || w;        h = obj.height || (w / scale);        var quality = obj.quality || 0.7; // 默認圖片質(zhì)量為0.7        //生成canvas        var canvas = document.createElement('canvas');        var ctx = canvas.getContext('2d');        // 創(chuàng)建屬性節(jié)點        var anw = document.createAttribute("width");        anw.nodeValue = w;        var anh = document.createAttribute("height");        anh.nodeValue = h;        canvas.setAttributeNode(anw);        canvas.setAttributeNode(anh);        ctx.drawImage(that, 0, 0, w, h);        // 圖像質(zhì)量        if (obj.quality && obj.quality <= 1 && obj.quality > 0) {          quality = obj.quality;        }        // quality值越小,所繪制出的圖像越模糊        var base64 = canvas.toDataURL('image/jpeg', quality);        // 回調(diào)函數(shù)返回base64的值        callback(base64);      }    }  </script></body></html>

總結(jié)

以上所述是小編給大家介紹的基于JS實現(xiàn)前端壓縮上傳圖片的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 景东| 富平县| 沭阳县| 和林格尔县| 平潭县| 合阳县| 手机| 大渡口区| 洞头县| 成安县| 灵璧县| 宁陵县| 绥阳县| 西林县| 文山县| 民乐县| 永顺县| 太保市| 华容县| 阿拉善左旗| 东至县| 咸丰县| 长白| 临汾市| 彰武县| 安岳县| 客服| 翁牛特旗| 泾阳县| 河池市| 云和县| 乌兰察布市| 西安市| 雷山县| 肥城市| 区。| 宁城县| 泰宁县| 唐海县| 桃园县| 长岭县|