微信小程序之批量上傳并壓縮圖片的實(shí)例代碼
具體內(nèi)容如下所示:
首先,要在.wxml文件里面創(chuàng)建一個(gè)canvas,作用是承載壓縮的圖片,以供上傳的時(shí)候獲取
這個(gè)canvas不能隱藏,否則沒效果,可以將其移至屏幕外。
<canvas canvas-id='attendCanvasId' class='myCanvas'></canvas>
然后呢,就是.js文件里面的方法了
// 點(diǎn)擊加_壓縮
takePhoto: function () {
var that = this;
let imgViewList = that.data.imgViewList; //這個(gè)是用來承載頁面循環(huán)展示圖片的
//拍照、從相冊選擇上傳
wx.chooseImage({
count: 4, //這個(gè)是上傳的最大數(shù)量,默認(rèn)為9
sizeType: ['compressed'], //這個(gè)可以理解為上傳的圖片質(zhì)量類型(官方給的),雖然沒什么卵用,要不然還要我們自己寫壓縮做什么
sourceType: ['album', 'camera'], //這個(gè)是圖片來源,相冊或者相機(jī)
success: function (res) {
var tempFilePaths = res.tempFilePaths //這個(gè)是選擇后返回的圖片列表
that.getCanvasImg(0, 0, tempFilePaths); //進(jìn)行壓縮
}
});
},
//壓縮并獲取圖片,這里用了遞歸的方法來解決canvas的draw方法延時(shí)的問題
getCanvasImg: function (index,failNum, tempFilePaths){
var that = this;
if (index < tempFilePaths.length){
const ctx = wx.createCanvasContext('attendCanvasId');
ctx.drawImage(tempFilePaths[index], 0, 0, 300, 150);
ctx.draw(true, function () {
index = index + 1;//上傳成功的數(shù)量,上傳成功則加1
wx.canvasToTempFilePath({
canvasId: 'attendCanvasId',
success: function success(res) {
that.uploadCanvasImg(res.tempFilePath);
that.getCanvasImg(index,failNum,tempFilePaths);
}, fail: function (e) {
failNum += 1;//失敗數(shù)量,可以用來提示用戶
that.getCanvasImg(inedx,failNum,tempFilePaths);
}
});
});
}
},
//上傳圖片
uploadCanvasImg: function (canvasImg){
var that = this;
let imgViewList = that.data.imgViewList;
var tempImg = canvasImg;
wx.uploadFile({
url: app.d.fileServer,//文件服務(wù)器的地址
filePath: tempImg,
formData: {
paramPath: "gift"
},
name: 'file',
success: function (res) {
var json2map = JSON.parse(res.data);
imgViewList.push(app.d.imageUrlFix + json2map[0].fileUrl);
that.setData({
imgViewList: imgViewList,
})
}
})
},
總結(jié)
以上所述是小編給大家介紹的微信小程序之批量上傳并壓縮圖片的實(shí)例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
JavaScript實(shí)現(xiàn)GriwView單列全選(自寫代碼)
在 GridView 里有一系列的 Checkbox ,要實(shí)現(xiàn)對其全選或全不選,二網(wǎng)上的都不否和要求,于是我自己寫了JavaScript 代碼,貼出來供大家參考2013-05-05
js判斷iframe內(nèi)的網(wǎng)頁是否滾動到底部觸發(fā)事件
這篇文章主要介紹了js判斷iframe內(nèi)的網(wǎng)頁是否滾動到底部觸發(fā)事件,需要的朋友可以參考下2014-03-03
Bootstrap Table 在指定列中添加下拉框控件并獲取所選值
通過 bootstrap-table 的Column 配置項(xiàng)中的formatter,將獲取到的數(shù)據(jù)轉(zhuǎn)換為包含數(shù)據(jù)的 select 控件。然后根據(jù)用戶選擇項(xiàng)更新對應(yīng)單元格數(shù)據(jù),最后通過getallselection方法獲取所選行數(shù)據(jù)2017-07-07
JavaScript兼容性總結(jié)之獲取非行間樣式案例
這篇文章主要介紹了JavaScript兼容性總結(jié)之獲取非行間樣式的相關(guān)資料,需要的朋友可以參考下2016-08-08
js報(bào)錯(cuò):Maximum?call?stack?size?exceeded的解決方法
這篇文章主要給大家介紹了關(guān)于js報(bào)錯(cuò)Maximum?call?stack?size?exceeded的解決方法,文中通過實(shí)例代碼將解決的方法介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02
淺析location.href跨窗口調(diào)用函數(shù)
本文詳細(xì)介紹了location.href跨窗口調(diào)用函數(shù),具體的使用方法及實(shí)例,有需要的朋友可以參考下2016-11-11

