我在手机上选择一张图片之后进行canvas压缩重新生成图片,然后用canvasToTempFilePath导出图片再上传到后台,可是后台处理不了这个图片,不压缩图片传到后台实在太大了。请问该如何去压缩图片。
var types = e.currentTarget.dataset.zp
var that = this;
wx.chooseImage({
count: 1,
sizeType: ['compressed'],
success: function(photo) {
wx.getImageInfo({
src: photo.tempFilePaths[0],
success: function(res) {
console.log(res)
var ctx = wx.createCanvasContext('attendCanvasId');
//设置canvas尺寸
ctx.drawImage(photo.tempFilePaths[0], 0, 0, 300, 160)
//将图片填充在canvas上
ctx.draw()
//下载canvas图片
setTimeout(function() {
wx.canvasToTempFilePath({
canvasId: 'attendCanvasId',
success: function(res) {
console.log(res.tempFilePath)
if (types == 'zm'){
that.setData({
zm: res.tempFilePath,
})
}else{
that.setData({
fm: res.tempFilePath,
})
}
}
})
}, 100)
}
})
}
})
canvasToTempFilePath 建议你放到 ctx.draw的回调里哈。。
生成的图,能放个链接出来吗?
返回的路径是这样的,用浏览器也打不开
http://tmp/wx90a9d06d5002244b.o6zAJs1p2N8ZC9p6LP-ENCbvfMkk.yB7fPlk0hck42cd30b0ca0fb78fb1873a0cca9d3a4f6.png
这个是个临时文件路径,只有小程序里能识别哦,uploadFile的时候,有啥问题吗?
上传文件的时候没有问题 就是后台处理不了上传的东西
这个就是个单纯的文件,二进制文件流,你后端直接把文件流保存起来就行了啊
好的