fk
fk
  • 发布:2020-07-25 17:45
  • 更新:2020-07-25 17:45
  • 阅读:774

【报Bug】CanvasContext.draw APP卡死

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win10

HBuilderX类型: 正式

HBuilderX版本号: 2.7.14

手机系统: Android

手机系统版本号: Android 6.0

手机厂商: 华为

手机机型: OPPO

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

uni.chooseImage({
count: size,
sizeType: ['compressed'],
success(res) {
// 获得临时路径
res.tempFilePaths.forEach(value => {
// 给图片添加水印
let ww, hh, fontcolor;
fontcolor = '#ff0000';
uni.getImageInfo({
src: value,
success(res) {
ww = res.width; //准确的宽高
hh = res.height;
me.cavWidth = ww + 'px';
me.cavHeight = hh + 'px';
var ctx = uni.createCanvasContext('myCanvas', me); //绑定画布
console.log(res.height);
console.log(res.width);
ctx.drawImage(value, 0, 0, ww, hh); //填充进图片

                            // 时间日期  
                            ctx.setFillStyle(fontcolor); //设置内容1的文字样式  
                            ctx.setFontSize(50);  
                            ctx.setTextAlign('right'); //设置对于坐标点的对齐方式  
                            ctx.fillText('2020/07/17 14:37', ww - 5, 100); //计算距离,将文字定位于图片的某处  
                            uni.showLoading({  
                                //增加loading等待效果  
                                mask: true  
                            });  
                            ctx.draw(false, () => {  
                                uni.canvasToTempFilePath({  
                                    canvasId: 'myCanvas',  
                                    success: ress => {  
                                        uni.hideLoading();  
                                        var index = ress.tempFilePath.lastIndexOf('/') + 1;  
                                        var img = { uri: ress.tempFilePath, name: ress.tempFilePath.substring(index) };  
                                        me.imgs.push(img);  
                                        me.$emit('added', img);  
                                    }  
                                });  
                            }); //输出到画布中  
                        }  
                    }); //这是uni.getImageInfo({的  

                }); //这是res.tempFilePaths.forEach(value => {的  
            } //这是success(res)的  
        }); 

操作步骤:

选择1080*1920的图片

预期结果:

APP卡死

实际结果:

APP卡死

bug描述:

低质量的图片各个端打水印正常,高质量的图片手机端ctx.draw(false, () => {})会卡死,进入不了回调函数。

2020-07-25 17:45 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复