下面的代码在真机中预览,苹果手机可以正常执行,安卓手机点击按钮后无任何反应,这个是什么原因引起的,谢谢!
各位大侠帮忙看下,谢谢!
//生成按钮点击事件
subCanvas: function () {
var that = this
this.data.ctx.draw(true, () => {
//console.log('绘制完成');
//setTimeout(() => { }, 2500)
//setTimeout(function () { }, 500);
wx.canvasToTempFilePath({
canvasId: 'handWriting',
fileType: 'png',
quality: 1, //图片质量
success(res) {
that.setData(
{
tempImagePath: res.tempFilePath //获取临时图片路径
},
)
var tempdata = that.data.tempImagePath
wx.getImageInfo({
src: tempdata,
success: (res) => {
let canvasContext = wx.createCanvasContext('tempCanvas')
//获得exif中的orientation信息
if (res.orientation == "up") {
var width = res.width / 2;
var height = res.height / 2;
that.setData({
imageWidth: height,
imageHeight: width,
})
canvasContext.translate(height / 2, width / 2)
//顺时针旋转90度,由纵向修改为横向
canvasContext.rotate(-90 * Math.PI / 180)
canvasContext.drawImage(tempdata, - width / 2, - height / 2, width, height);
}
canvasContext.draw()
that.drawImage()
}
})
}
})
});
},
//将画布转化为图片(图片有纵向修改为横向)
drawImage: function (path) {
wx.showLoading({ //显示加载框
title: '',
mask: false
})
var that = this;
setTimeout(() => {
// 将生成的canvas图片,转为真实图片
wx.canvasToTempFilePath({
x: 0,
y: 0,
canvasId: 'tempCanvas',
success(res) { //转化成功回调函数
//页面跳转
var pages = getCurrentPages();
var currPage = pages[pages.length - 1]; //当前页面
var prevPage = pages[pages.length - 2]; //上一个页面
var that = this
//直接调用上一个页面对象的setData()方法,把数据存到上一个页面中去
prevPage.setData({ //设置上一个页面中的data
signImageFile: res.tempFilePath,
})
wx.hideLoading() //隐藏加载框
wx.navigateBack({ //返回上一个页面
delta: 1,
})
},
fail: function (res) {
}
})
}, 2000)
},
在小程序开发工具中,上面的代码可以正常执行,但是到了安卓真机里面就不可以了!
今天我遇到了这个问题,原因是canvas绘制的图像过大,导致android缓冲区的限制大小。
解决办法就是:把像素比设置为1。
// const dpr = wx.getSystemInfoSync().pixelRatio; const dpr = 1; canvas.width = that.data.canvas.width * dpr; canvas.height = that.data.canvas.height * dpr;
我也是
你好,麻烦具体描述问题流程,提供出现问题的具体机型、微信版本号、系统版本号,以及能复现问题的代码片段https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html