小程序自定义组件canvas生成的图片空白以及压缩失败问题

		之前公司的项目有很多运用到拍照压缩上传,现在项目要求整合,于是打算封装成组件直接调用。
		在页面上直接调用正常,封装成自定义组件后发现利用canvas压缩图片后获取图片路径一直报错
		canvasToTempFilePath: fail canvas is empty。
		经查询官方文档提示自定义组件

在自定义组件下,当前组件实例的this,以操作组件内 canvas 组件

var _self = this;
ctx.draw(false, setTimeout(function() {
						wx.canvasToTempFilePath({
							canvasId: 'uploadcanvas',
							destWidth: canvasWidth,
							destHeight: canvasHeight,
							success: function(res) {
								console.log("压缩最终图片路径", res.tempFilePath) //最终图片路径
								_self.upImgOss(res.tempFilePath,ctx)
							},
							fail: function(res) {
								wx.showToast({
									title: JSON.stringify(res),
									icon: "none",
									duration: 3000
								});
							},
							complete: res =>{
								wx.hideLoading();
							}
						}, _self)
					}, 600)) // 这里指该组件的this
	经过修改后获取成功,但是打开全是黑的没有图,于是排查canvas是否画出来图片,结果显示全是空白,也没有任何报错。排查了半天才发现在创建画布的时候也需要this当前组件,不得不说真坑!
var _self = this;
const ctx = wx.createCanvasContext('uploadcanvas',_self); //创建画布
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值