清遠(yuǎn)建網(wǎng)站的公司seo軟文推廣工具
由于wx.compressImage(Object object) iOS 僅支持壓縮 JPG 格式圖片。所以我們需要做一下特殊的處理:
1.獲取文件,判斷文件是否大于設(shè)定的大小
2.如果大于則使用canvas進(jìn)行繪制,并生成新的圖片路徑
3.上傳圖片
async chooseImage() {let res = await wx.chooseMedia({count: 1,sizeType: ["compressed"],mediaType: ['image']})if (res.tempFiles[0].size > 500 * 1024) { //大于500k//壓縮圖片compressImage(res.tempFiles[0], '#canvasId').then(result => {this.uploadFile(result.tempFilePath)})} else {this.uploadFile(res.tempFiles[0].tempFilePath)}},
const compressImage = function (file, node) {return new Promise((resolve, reject) => {//獲取圖片的信息wx.getImageInfo({src: file.tempFilePath,success: async function (imageInfo) {//獲取canvasconst query = wx.createSelectorQuery()let canvasDom = query.select(node) //畫布idcanvasDom.fields({node: true,size: true}).exec((res) => {const canvas = res[0].nodecanvas.width = 900 canvas.height = 900const ctx = canvas.getContext('2d')let img = canvas.createImage();img.src = imageInfo.path; //要壓縮的圖片路徑img.onload = () => {// 將圖片繪制到canvasctx.drawImage(img, 0, 0, canvas.width, canvas.height)// 生成圖片wx.canvasToTempFilePath({canvas,destWidth: 900, //壓縮后寬destHeight: 900, //壓縮后高fileType: 'jpg',quality: 0.8, //質(zhì)量,可自定義success: (imgResult) => {let fs = wx.getFileSystemManager()fs.getFileInfo({filePath: imgResult.tempFilePath,success: (res) => {//壓縮后的圖片如果還是大于500k,那么繼續(xù)壓縮直到小于500為止if (res.size > 500 * 1024) {compressImage(imgResult)} else {resolve(imgResult)}}})},fail: (err) => {console.error(err);reject(err)}})}})},fail: function (err) {console.error('獲取圖片信息失敗:', err);}});})
}
uploadFile(avatarUrl) {if (avatarUrl) {wx.uploadFile({filePath: avatarUrl,name: 'file',url: "http://139.224.49.138:888/mini/myPage/uploadAvatar",formData: {openid: getApp().globalData.openid},success: (res) => {let {userInfo} = app.store.getState();userInfo.headPic = JSON.parse(res.data).urlapp.store.setState({userInfo: userInfo});},fail: err => {console.log(err);}})}},
<canvas hidden="{{true}}" type="2d" id="canvasId"/>