9***@qq.com
9***@qq.com
  • 发布:2023-03-31 12:52
  • 更新:2023-04-23 09:30
  • 阅读:326

【报Bug】canvasPutImageData 官方示例安卓app下闪退

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows 10 专业版 22H2

HBuilderX类型: 正式

HBuilderX版本号: 3.7.9

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: 红米K40

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
<template>  
    <view>  
        <canvas style="width: 80vw; height: 80vh;" type="2d" :canvas-id="canvasId"  
            @error="canvasIdErrorCallback"></canvas>  
        <button @click="start_draw()">开始绘制</button>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                canvasId: 'camera-canvas',  
                deviceWidth: uni.getSystemInfoSync().windowWidth,  
                deviceHeight: uni.getSystemInfoSync().windowHeight * 0.8,  
            }  
        },  
        onReady() {  
            this.drawCamera()  
        },  
        methods: {  
            canvasIdErrorCallback: function(e) {  
                console.error(e.detail.errMsg)  
            },  
            drawCamera() {  
//官方示例  
                const data = new Uint8ClampedArray([255, 0, 0, 255])  
                uni.canvasPutImageData({  
                  canvasId: this.canvasId,  
                  x: 0,  
                  y: 0,  
                  width: 1,  
                  data: data,  
                  success(res) {}  
                })  
            },  
            start_draw() {  
                let that = this  
                uni.canvasGetImageData({  
                    canvasId: this.canvasId,  
                    x: 0,  
                    y: 0,  
                    width: 38,  
                    height: 51,  
                    success(res) {  
                        let imgdatda = res.data  
                        var totalPixels = (res.width * res.height);  
                        for (var i = 0; i < totalPixels; i++) {  
                            var n = i * 4;  
                            var r = imgdatda[n];  
                            var g = imgdatda[n + 1];  
                            var b = imgdatda[n + 2];  
                            imgdatda[n] = (r * 0.393) + (g * 0.769) + (b * 0.189); // 底片效果  
                            imgdatda[n + 1] = (r * 0.349) + (g * 0.686) + (b * 0.168);  
                            imgdatda[n + 2] = (r * 0.272) + (g * 0.534) + (b * 0.131);  
                        }  
                        console.log(imgdatda instanceof Uint8ClampedArray)  
                        const data = new Uint8ClampedArray([255, 0, 0, 255])  
                        uni.canvasPutImageData({  
                          canvasId: that.canvasId,  
                          x: 0,  
                          y: 0,  
                          width: 1,  
                          data: data,  
                          success(res) {}  
                        })  
                    }  
                })  
            }  
        }  
    }  
</script>  

操作步骤:

空白新项目,运行官方示例在安卓app下闪退

预期结果:

绘制图片

实际结果:

app闪退

bug描述:

空白新项目,运行官方示例在安卓app下闪退

2023-03-31 12:52 负责人:DCloud_App_Array 分享
已邀请:
2***@qq.com

2***@qq.com - 一个初出茅庐的小白

我也是遇到这个问题,不知道什么原因,也捕获不到error

DCloud_UNI_GSQ

DCloud_UNI_GSQ

仅个别机型这样吗?

  • 9***@qq.com (作者)

    我身边都是小米或者红米的手机 均闪退,刚刚下面那个兄弟说一加的ACE2也闪退

    2023-04-15 13:21

  • a聆听

    更新到3.7.0以后的编辑器就会这样;老版本的编辑器是正常的;

    2023-04-17 14:03

  • a聆听

    oppo 机型闪退,,华为机型卡手机;

    2023-04-17 14:04

b***@163.com

b***@163.com

今天同样碰到了这个闪退的问题,H5端正常,APP端闪退,两部手机 红米NOTE 9 Pro,一加 ACE2 ,都是闪退。希望官方尽快修复这个BUG,项目就卡在这里了

a聆听

a聆听

我也遇到这个问题;在安卓上要么闪退;要么渲染不出图形;感觉像内存泄露,会卡手机;

p***@163.com

p***@163.com

iOS平台正常,两台Android测试机都发生闪退(小米、vivo),希望尽快修复

要回复问题请先登录注册