uni.canvasToTempFilePath({
x: 0,
y: 0,
width: 160,
height: 160,
destWidth: 160,
destHeight: 160,
fileType: 'jpg',
canvasId: 'myCanvas',
success: (res) => {
console.log('rrrr', res);
// 判断回调函数
if (typeof callback === 'function') {
console.log('aaaaaaaaaaaaaaaa');
// 设置新的图片临时路径
this.$set(chooseImageRes.tempFilePaths, 0, res.tempFilePath);
console.log('chooseImageRes', chooseImageRes);
// 回调
callback(chooseImageRes, true);
}
},
fail: (err) => {
// 判断回调函数
if (typeof callback === 'function') {
// 设置新的图片临时路径
this.$set(chooseImageRes.tempFilePaths, 0, img);
// 回调
callback(chooseImageRes, false);
}
},
complete: () => {
console.log('complete');
}
});
15 个回复
DCloud_UNI_Anne
未复现此问题,请升级至HBuilder X - 3.2.14-alpha试试
h***@126.com (作者)
3.2.14.20211112-alpha 和 3.2.12.20211029版本都试过了,还是不行,uni.canvasToTempFilePath不执行任何回调,附件是示例代码,麻烦帮看看什么原因,多谢了~
tuanup
我这边也遇到这个问题了,但我的原因是canvasId和标签上的canvas-id不一致。。。
不过这不执行失败回调也不报错确实是uniapp的锅。
2024-03-11 14:27
h***@126.com (作者)
我新建了项目,把所有没有意义的代码都移除了~ 还是不行,不执行uni.canvasToTempFilePath的回调~ 详见附件的压缩包~ 麻烦看看是否能在您那运行一下这个项目试试看原因,主要不回调也不报错,实在不知道什么原因~ 其实我的目的就是解决uni.chooseImage上传图片会出现旋转的问题,另外,附件的图片是我用来测试的图片,显示器那个图片上传后图片会发生逆时针旋转90度的情况~ 如果有更好的处理uni.chooseImage上传图片旋转的问题的方法您也可以发给我试一下看看,多谢了~
DCloud_UNI_Anne
空项目只用uni.canvasToTempFilePath文档内的示例代码,是否能复现你的问题?
不能的话你可以排除法,排查出来具体你哪一行导致的。
h***@126.com (作者)
按照你说的,用示例代码做了测试,还是依然不执行~ 附件是相关页面代码,麻烦帮看一下~
h***@126.com (作者)
或者您是否可以给我一个可以执行的项目,我看一下您那边是怎么写的~
h***@126.com (作者)
可否给我发一个可以正常跑通的DEMO包?我试试在我机器上是否可以正常运行,我按照你说的方法都试过了,还是不行~
DCloud_UNI_Anne
你试下
h***@126.com (作者)
我看你项目里是直接加了canvas标签的,可以执行回调。我用uni.createCanvasContext函数创建的canvas就不行,这个怎么解?我其实不需要页面显示出来这个canvas,只是用它做一些图片旋转的操作~
DCloud_uni-ad_HDX
API
uni.createCanvasContext
并不是创建canvas
组件,是获取canvas
组件的上下文API
uni.canvasToTempFilePath
将 canvas 组件保存为一张图片,需要指定在模板中的 canvas-id如果不想显示 canvas 只是用来处理图片的操作,可以在模板中设置 canvas 的样式
display: none
以隐藏h***@126.com (作者)
将模板中的canvas设置为display: none;的话,就取不到canvas元素对象了,报错,width和height为0
x***@xinletu.love
大佬,解决了吗?我也遇到这个问题了
7***@qq.com
有解决吗? 就是死活不进回调函数
2022-05-25 16:54
7***@qq.com
排除下面两个方向
(1)画布有高度
(2)draw 里设置了延时
2022-05-25 17:14
x***@xinletu.love
回复 7***@qq.com: 没解决,改成后端画canvas了
2022-06-21 10:55
LiuYangbin - sfgdfg
我也遇到了和你一样的问题 找了一天了。。 之前一直报错: getCanvasHandlers is not defined 。。没太注意, 然后我就把canvas 标签删除 重新写了一遍后 发现不会出现这个 :getCanvasHandlers is not defined 错误了 。。然后就执行了! 所以我猜测是因为canvas渲染的问题导致uni.canvasToTempFilePath不执行
LiuYangbin
记得更改微信开发者工具中的调试库版本 位置在: 右上角 详情->本地设置->调试基础库 更改为 2.23.4或更旧的版本
2022-07-19 11:02
1***@qq.com - 为了生活而拼搏
我也遇到了,在demo中,通过uni.chooseImage()选择图片后,通过canvas画出,然后旋转保存。在demo里一切正常,而在项目中就不行。麻了麻了麻了
mw515
uni.canvasToTempFilePath函数不执行回调,所有回调都不执行,无论是放到setTimeout里边还是放到ctx.draw的回调中都不执行~
这个有解决吗?一直不行呢