本文主要為大家詳細介紹了微信小程式實現圖片壓縮功能,具有一定的參考價值,有興趣的小夥伴們可以參考一下,希望能幫助到大家。
小龍大哥的微信小程式在初始階段相當於IE界的6,在這裡告訴大家一個剛趟過去的坑。
拍照的API。
wx.chooseImage({ count: 1, // 默认9 sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片 var tempFilePaths = res.tempFilePaths; } });
在上邊,明確的給出大小的類型,本想省事,然並沒有什麼用…..
廢話少說,給大家說下IOS和安卓中差別,拍照圖片壓縮的坑。
// 点击照相 takePictures:function(){ var that = this; wx.chooseImage({ count: 1, // 默认9 sizeType: ['compressed'], // 可以指定是原图还是压缩图,默认二者都有 sourceType: ['camera'], // 可以指定来源是相册还是相机,默认二者都有 success: function (res) { // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片 var tempFilePaths = res.tempFilePaths; that.setData({ attendSuccessImg:tempFilePaths[0] }); // 上传图片 //判断机型 var model = ""; wx.getSystemInfo({ success:function(res){ model= res.model; } }) if(model.indexOf("iPhone") <= 0){ that.uploadFileOpt(that.data.attendSuccessImg); console.log(111111) }else{ drawCanvas(); } // 缩放图片 function drawCanvas(){ const ctx = wx.createCanvasContext('attendCanvasId'); ctx.drawImage(tempFilePaths[0], 0, 0, 94, 96); ctx.draw(); that.prodImageOpt(); } } }); }, // 生成图片 prodImageOpt:function(){ var that = this; wx.canvasToTempFilePath({ canvasId: 'attendCanvasId', success: function success(res) { that.setData({ canvasImgUrl:res.tempFilePath }); // 上传图片 that.uploadFileOpt(that.data.canvasImgUrl); }, complete: function complete(e) { } }); },
再點擊拍照後,IOS的進行了圖片壓縮功能,然而,安卓的依然是那麼大,所以在這過程中,我們需要判斷下當前機型,然後執行canvas壓縮。
上述程式碼,拿到即可用,但少一部分wxml中需要加入一個canvas標籤。
進行介面呼叫。希望對大家有幫助。
相關推薦:
以上是微信小程式圖片壓縮功能的實作方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!