中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Vue圖片壓縮并上傳至服務(wù)器功能-創(chuàng)新互聯(lián)

本文主要講解基于 Vue + Vant ,實現(xiàn)移動端圖片選擇,并用 Canvas 壓縮圖片,最后上傳至服務(wù)器。還會封裝一個工具類,方便直接調(diào)用。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設(shè),杜爾伯特企業(yè)網(wǎng)站建設(shè),杜爾伯特品牌網(wǎng)站建設(shè),網(wǎng)站定制,杜爾伯特網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,杜爾伯特網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

一、工具類封裝

廢話不多說先上代碼,封裝一個 CompressImageUtils 工具類:

**
 * 圖片壓縮工具類
 * 大高度和大寬度都為 500,如果超出大小將等比例縮放。
 *
 * 注意可能出現(xiàn)壓縮后比原圖更大的情況,在調(diào)用的地方自己判斷大小并決定上傳壓縮前或壓縮后的圖到服務(wù)器。
 */
// 將base64轉(zhuǎn)換為blob
export function convertBase64UrlToBlob(urlData) {
 let arr = urlData.split(',')
 let mime = arr[0].match(/:(.*?);/)[1]
 let bstr = atob(arr[1])
 let n = bstr.length
 let u8arr = new Uint8Array(n)
 while (n--) {
  u8arr[n] = bstr.charCodeAt(n)
 }
 return new Blob([u8arr], {type: mime})
}

// 壓縮圖片
export function compressImage(path) {
 //大高度
 const maxHeight = 500;
 //大寬度
 const maxWidth = 500;
 return new Promise((resolve, reject) => {
  let img = new Image();
  img.src = path;
  img.onload = function () {
   const originHeight = img.height;
   const originWidth = img.width;
   let compressedWidth = img.height;
   let compressedHeight = img.width;
   if ((originWidth > maxWidth) && (originHeight > maxHeight)) {
    // 更寬更高,
    if ((originHeight / originWidth) > (maxHeight / maxWidth)) {
     // 更加嚴重的高窄型,確定大高,壓縮寬度
     compressedHeight = maxHeight
     compressedWidth = maxHeight * (originWidth / originHeight)
    } else {
     //更加嚴重的矮寬型, 確定大寬,壓縮高度
     compressedWidth = maxWidth
     compressedHeight = maxWidth * (originHeight / originWidth)
    }
   } else if (originWidth > maxWidth && originHeight <= maxHeight) {
    // 更寬,但比較矮,以maxWidth作為基準
    compressedWidth = maxWidth
    compressedHeight = maxWidth * (originHeight / originWidth)
   } else if (originWidth <= maxWidth && originHeight > maxHeight) {
    // 比較窄,但很高,取maxHight為基準
    compressedHeight = maxHeight
    compressedWidth = maxHeight * (originWidth / originHeight)
   } else {
    // 符合寬高限制,不做壓縮
   }
   // 生成canvas
   let canvas = document.createElement('canvas');
   let context = canvas.getContext('2d');
   canvas.height = compressedHeight;
   canvas.width = compressedWidth;
   context.clearRect(0, 0, compressedWidth, compressedHeight);
   context.drawImage(img, 0, 0, compressedWidth, compressedHeight);
   let base64 = canvas.toDataURL('image/*', 0.8);
   let blob = convertBase64UrlToBlob(base64);
   // 回調(diào)函數(shù)返回blob的值。也可根據(jù)自己的需求返回base64的值
   resolve(blob)
  }
 })
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

新聞標題:Vue圖片壓縮并上傳至服務(wù)器功能-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.rwnh.cn/article8/cepcop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)頁設(shè)計公司網(wǎng)站制作、建站公司、定制開發(fā)微信公眾號

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
安达市| 凤凰县| 囊谦县| 浮梁县| 滦平县| 丽江市| 三门峡市| 大洼县| 江源县| 穆棱市| 衡阳县| 西安市| 玉屏| 调兵山市| 赣州市| 金寨县| 民和| 靖安县| 巴青县| 泗水县| 金沙县| 太湖县| 南康市| 乌兰浩特市| 本溪| 高雄市| 乌鲁木齐市| 古交市| 德阳市| 顺义区| 中超| 陈巴尔虎旗| 金川县| 丰城市| 堆龙德庆县| 昭通市| 司法| 察隅县| 吉首市| 唐海县| 靖西县|