微信小程序中我可以使用wx.chooseImage这个api同时获得压缩图片和未压缩图片么

业务场景中有个手势操作图片的功能,用的是canvas,然后需要在手机端操作绘制,最后获得图片需要在A4纸上绘制,因为有的图片会很大(大约大于3M在手机上手势操作绘制就会卡了),但如果采用微信自动压缩,但压缩后就会在A4纸上失真,所以我想问下各位有没有可以同时获得压缩图片和未压缩图片么,或者把用户传入的图片压缩到2M以下,小于2M不压缩

阅读 10.9k
1 个回答

自己做压缩,把图片绘制到制定大小的canvas上,然后调用wx.canvasToTempFilePath(OBJECT)接口保存为图片。

wxml

<button bindtap='selectImage'>select image</button>
<button bindtap='saveImage'>save image</button>
<canvas style="width: 300px; height: 200px;" canvas-id="myCanvas"></canvas>

js

// 绘制图片到canvas上
selectImage:function(){
    const ctx = wx.createCanvasContext('myCanvas')
    
    wx.chooseImage({
      success: function(res){
        ctx.drawImage(res.tempFilePaths[0], 0, 0, 300, 200)
        ctx.draw()
      }
    })
},
//保存图片
saveImage:function(){
    const ctx = wx.createCanvasContext('myCanvas')
    wx.canvasToTempFilePath({
      x: 0,
      y: 0,
      width: 300,
      height: 200,
      destWidth: 300,
      destHeight: 200,
      canvasId: 'myCanvas',
      success: function(res) {
        console.log(res.tempFilePath)
        wx.previewImage({
            urls: [res.tempFilePath],
        })
      } 
    })
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题