校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > html5使用canvas壓縮圖片的示例代碼

html5使用canvas壓縮圖片的示例代碼

熱門標簽:ok電銷機器人 智能電銷機器人被禁用了么 惡搞電話機器人 欣鼎電銷機器人 效果 地圖標注軟件打印出來 電話機器人技術 如何查看地圖標注 黃石ai電銷機器人呼叫中心 高德地圖標注商戶怎么標

前倆天做了一個圖片轉base64上傳的功能,發現如果圖片的base64過大的話,請求會變的很慢,嚴重的直接超時了,所以想到了在上傳前壓縮一下圖片,然后再上傳到后臺,這樣可以大大的提高效率,在這里記錄一下利用 canvas 壓縮圖片遇到的幾個坑。完整代碼會在文末給出。

第一個坑,在壓縮圖片的時候沒獲取圖片本身的寬高,給了一個 600*480 的定寬定高,因為是手機端的,在上傳圖片的時候都是幾兆的圖片,所以這塊沒任何問題。出問題的地方在 修改頭像的時候,測試的時候上傳的圖片都是小圖片,然后就出現了 壓縮后的圖片顯示不完全,大部分都是空白的現象,這就是因為在壓縮的時候沒有考慮圖片原本的寬高的情況。

第二個坑,解決第一個坑的辦法就是在圖片加載完成后(onload),獲取圖片本身的寬高,然后賦值給 canvas ,這樣進行操作,但是這有個坑就是,圖片加載是異步的,在你 return 的時候,返回的可能是 undefined 而不是你需要的 壓縮后的 base64。這里的解決方法是,新建一個 Promise ,然后把結果 resolve() 返回去,在調用的時候 .then() 得到結果。

知識點:

  • canvas 的 toDataURL('image/png', 0.9) ; 把 canvas 畫的圖片轉換為 base64,第一個參數表示的是圖片的類型,第二個參數表示的是圖片的清晰度。
  • 規定一個最大尺寸,如果圖片本身的寬高大于這個尺寸,按照最大的一個邊進行縮放,另一個根據圖片的 比例 進行設置,然后設置給 canvas .

miniImage.js

export default async function miniSize(imgData, maxSize = 200*1024){
    // const maxSize = 200 * 1024;

    if(imgData && imgData.files && imgData.files.size < maxSize) {
        return imgData.url;
    }else{
      console.log('----------------壓縮圖片-------------------');
      const canvas = document.createElement('canvas');
      let img = new Image();
      img.src = imgData.url;
      let ctx = canvas.getContext('2d');
      return new Promise((resolve =>{
        img.addEventListener('load', function(){
          //圖片原始尺寸
          let originWidth = this.width;
          let originHeight = this.height;
          // 最大尺寸限制
          let maxWidth = 400, maxHeight = 400;
          // 目標尺寸
          let targetWidth = originWidth, targetHeight = originHeight;
          // 圖片尺寸超過400x400的限制
          if (originWidth > maxWidth || originHeight > maxHeight) {
            if (originWidth / originHeight > maxWidth / maxHeight) {
              // 更寬,按照寬度限定尺寸
              targetWidth = maxWidth;
              targetHeight = Math.round(maxWidth * (originHeight / originWidth));
            } else {
              targetHeight = maxHeight;
              targetWidth = Math.round(maxHeight * (originWidth / originHeight));
            }
          }
          canvas.width = targetWidth;
          canvas.height = targetHeight;
          ctx.drawImage(img, 0, 0, targetWidth, targetHeight);
          let base64 = canvas.toDataURL('image/png', 0.9);
          resolve(base64);
        }, false);
      }))
    }
}

調用:

test.js

onChangeImg = async (files, type, index) => {
    let previous = this.props.imagePicker.files;
    if(type === "add") {
      let result = miniSize(files[files.length-1]);
      //使用 .then() 調用獲得結果
      await result.then(res => {
         previous.push({url: res});
      });
    }else if(type === "remove") {
        previous.splice(index,1);
    }
    await this.props.dispatch({
      type: 'imagePicker/saveImage',
      payload: {
        files: previous
      }
    })
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:綏化 阿壩 盤錦 萍鄉 赤峰 聊城 中山 金昌

巨人網絡通訊聲明:本文標題《html5使用canvas壓縮圖片的示例代碼》,本文關鍵詞  html5,使用,canvas,壓縮,圖片,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《html5使用canvas壓縮圖片的示例代碼》相關的同類信息!
  • 本頁收集關于html5使用canvas壓縮圖片的示例代碼的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美日韩你懂的| 亚洲视频免费看| 国产精品久久二区二区| 亚洲综合色丁香婷婷六月图片| 久久99久久99精品免视看婷婷| av不卡一区二区三区| 欧美电影免费观看完整版| 亚洲视频网在线直播| 国产精品1024| 欧美片网站yy| 亚洲天堂a在线| 国产一区二区0| 欧美一区二区视频免费观看| 日韩毛片在线免费观看| 国产九九视频一区二区三区| 欧美亚洲图片小说| 国产精品色哟哟| 国产成人综合在线| 精品国产sm最大网站免费看| 午夜视频在线观看一区| 色综合久久中文综合久久97 | 国产精一区二区三区| 91精品国产免费久久综合| 亚洲主播在线观看| 在线一区二区三区四区| 亚洲视频免费在线观看| 99re6这里只有精品视频在线观看| 久久综合久久鬼色中文字| 美女在线一区二区| 91精品在线麻豆| 亚洲成人综合在线| 欧美在线短视频| 亚洲乱码一区二区三区在线观看| 成人激情小说网站| 欧美激情自拍偷拍| 国产成人在线观看| 中文字幕免费一区| 国产高清精品久久久久| 国产天堂亚洲国产碰碰| 福利一区福利二区| 国产精品福利一区| 91福利精品视频| 亚洲成人免费视频| 日韩一级精品视频在线观看| 奇米精品一区二区三区四区| 日韩精品资源二区在线| 经典三级在线一区| 国产精品无遮挡| 色综合天天视频在线观看| 亚洲香肠在线观看| 欧美一区二区性放荡片| 国产乱码字幕精品高清av| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲国产精品二十页| 成人精品一区二区三区中文字幕 | 精品国产在天天线2019| 国产精品中文有码| 国产精品国产三级国产aⅴ中文| 色综合久久中文综合久久97| 午夜精品久久久久久久| 久久影音资源网| 97精品久久久午夜一区二区三区| 亚洲图片欧美一区| 久久久久国产精品免费免费搜索| 99久久精品费精品国产一区二区| 亚洲福利电影网| 久久久蜜臀国产一区二区| 91在线国产福利| 日本三级韩国三级欧美三级| 日本一区二区三区视频视频| 欧洲av在线精品| 久久99精品国产91久久来源| 亚洲天堂中文字幕| 欧美成人精品高清在线播放| 91影视在线播放| 久久精品国产精品亚洲红杏| 亚洲精品日韩综合观看成人91| 日韩欧美自拍偷拍| 在线日韩国产精品| 国内久久精品视频| 亚洲电影欧美电影有声小说| 日本一区免费视频| 日韩女优av电影| 91美女在线视频| 国产福利精品导航| 午夜精品久久一牛影视| 亚洲欧洲日本在线| 久久在线免费观看| 欧美精品vⅰdeose4hd| 不卡av在线免费观看| 久久99蜜桃精品| 午夜精品福利一区二区蜜股av| 国产精品色眯眯| 久久九九影视网| 日韩欧美国产综合| 欧美疯狂做受xxxx富婆| 本田岬高潮一区二区三区| 国产在线精品免费| 男人的天堂久久精品| 亚洲图片欧美色图| 亚洲女同女同女同女同女同69| 国产日韩欧美精品电影三级在线| 日韩欧美久久久| 日韩欧美专区在线| 欧美精品1区2区3区| 在线观看网站黄不卡| 99视频精品在线| 成人av资源网站| 本田岬高潮一区二区三区| 国产东北露脸精品视频| 国产麻豆视频一区二区| 国产精品一区久久久久| 精品一区二区国语对白| 久久精品国产精品亚洲红杏| 久草中文综合在线| 久久99国产精品成人| 久久99精品国产.久久久久久| 久久超碰97中文字幕| 久久草av在线| 国产精品888| 国产91精品在线观看| 国产成人超碰人人澡人人澡| 国产老肥熟一区二区三区| 国产精品主播直播| 波波电影院一区二区三区| 99久久精品国产一区| 在线免费观看成人短视频| 欧美在线观看一区| 日韩一区二区三区视频| 久久综合色之久久综合| 国产精品拍天天在线| 亚洲精品中文在线观看| 亚洲不卡一区二区三区| 日韩成人伦理电影在线观看| 捆绑紧缚一区二区三区视频| 国产美女精品人人做人人爽| 成人综合在线观看| 色狠狠色狠狠综合| 欧美一区二区日韩| 国产午夜精品理论片a级大结局| 中文字幕第一区综合| 亚洲精品视频在线观看免费| 日韩av在线免费观看不卡| 国产一区美女在线| 99久久99久久免费精品蜜臀| 欧美性猛交一区二区三区精品 | 日韩不卡一区二区三区| 极品美女销魂一区二区三区免费| 国产成人av福利| 色综合久久精品| 欧美一级国产精品| 日本一区二区三区免费乱视频| 一区二区欧美国产| 韩国成人福利片在线播放| 91网页版在线| 日韩欧美二区三区| 亚洲欧洲国产日本综合| 日本v片在线高清不卡在线观看| 国产精品123| 欧美二区在线观看| 国产精品人妖ts系列视频| 午夜av一区二区三区| 成熟亚洲日本毛茸茸凸凹| 91精品在线免费观看| 亚洲欧洲国产专区| 久久 天天综合| 精品视频999| 国产精品国产三级国产aⅴ无密码| 日本女优在线视频一区二区| 不卡区在线中文字幕| 日韩三区在线观看| 亚洲第一狼人社区| 91同城在线观看| 久久久久一区二区三区四区| 午夜成人在线视频| 在线观看一区不卡| 中文字幕欧美一| 国产精品白丝jk黑袜喷水| 91精品国产综合久久久久久久| 亚洲婷婷综合色高清在线| 国产一区二区在线看| 欧美日韩大陆一区二区| 亚洲男同性恋视频| 成人app网站| 国产欧美日韩久久| 国模大尺度一区二区三区| 8x福利精品第一导航| 一区二区三区日韩欧美| av在线播放一区二区三区| 中文字幕欧美三区| 国产不卡视频一区二区三区| 久久综合国产精品| 麻豆精品精品国产自在97香蕉| 欧美日韩一本到| 香蕉加勒比综合久久| 在线看不卡av| 一区二区激情小说| 欧美四级电影在线观看| 亚洲观看高清完整版在线观看| 日本国产一区二区|