微信小程序压缩图片并上传到服务器(拿去即用)

Posted zouwangblog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序压缩图片并上传到服务器(拿去即用)相关的知识,希望对你有一定的参考价值。

这里注意一下,图片压缩后的宽度是画布宽度的一半

canvasToTempFilePath 创建画布的时候会有一定的时间延迟容易失败,这里加setTimeout来缓冲一下

这是单张图片压缩,多张的压缩暂时还没有成功,保存到服务器上后是空白的,如有大神望指点一二(>人<;)
<canvas canvas-id=‘photo_canvas‘ style=‘width:1000rpx;height:canvas_hpx‘ class=‘myCanvas‘></canvas>

/**压缩图片 */
  compressionImage(tempFilePaths, params) 
    let that = this
    wx.getImageInfo(
      src: tempFilePaths[0],
      success: function(res) 
        var ctx = wx.createCanvasContext('photo_canvas');
        //设置canvas尺寸
        var towidth = 500; //按宽度500px的比例压缩
        var toheight = Math.trunc(500 * res.height / res.width);
        that.setData(
          canvas_h: toheight
        )
        ctx.drawImage(tempFilePaths[0], 0, 0, res.width, res.height, 0, 0, towidth, toheight)
        that.createMap(ctx, params);
      
    )
  ,
  /**创建画布并上传图片 */
  createMap(ctx, params) 
    let that = this;
    ctx.draw(true, function() 
      wx.showLoading(
        title: '压缩中',
      )
      setTimeout(() => 
        wx.canvasToTempFilePath(
          canvasId: 'photo_canvas',
          fileType: "jpg",
          success: function(res) 
            wx.hideLoading();
            wx.uploadFile(
              url: app.globalData.baseUrl + '/wechat/want/addWant',
              filePath: res.tempFilePath,
              name: 'file',
              formData: 
                'parameters': JSON.stringify(params)
              ,
              success: function(res) 
                console.log("state:" + JSON.parse(res.data).state)
                if (JSON.parse(res.data).state === 1) 
                  wx.showToast(
                    title: '发布成功',
                    duration: 2000,
                    icon: "none",
                    success() 
                      setTimeout(function() 
                        wx.navigateBack(
                          delta: 1,
                        )
                      , 1000);
                    
                  )
                
              ,
              fail(res) 
                console.log("fail" + res)
              
            )
          ,
          fail(res) 
            if (res.errMsg === "canvasToTempFilePath:fail:create bitmap failed") 
              console.log("导出map失败")
            
          
        , this)
      , 200);
 
    )
  ,

以上是关于微信小程序压缩图片并上传到服务器(拿去即用)的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序图片压缩

微信小程序用户上传用户图片数据太大,怎么样能降低图片像素

微信小程序拍照和上传图片实现

微信小程序上传图片+图片预览

微信小程序选择并上传图片

微信小程序 上传图片