s***@soian.com
s***@soian.com
  • 发布:2020-11-27 11:41
  • 更新:2020-12-01 18:01
  • 阅读:860

华为手机升级完补丁包后,uni.canvasToTempFilePath走fail,不走success

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: win7旗舰版

HBuilderX类型: 正式

HBuilderX版本号: 2.9.8

手机系统: Android

手机系统版本号: Android 10

手机厂商: 华为

手机机型: HONOR 20 Liite LAR-AL00

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:
    <view>  
        <canvas canvas-id="myCanvas"></canvas>  
        <image :src="path" mode=""></image>  
        <button type="default" @click="open">拍照</button>  
    </view>  
</template>  
<script>  
export default {  
    data() {  
        return {  
            path: ''  
        };  
    },  
    methods: {  
        open() {  
            var ctx = uni.createCanvasContext('myCanvas', this);  
            var temp = this;  
            uni.chooseImage({  
                sourceType: ['camera'],  
                success(res) {  
                    uni.getImageInfo({  
                        src: res.tempFilePaths[0],  
                        success(s) {  
                            ctx.drawImage(res.tempFilePaths[0], 0, 0, s.width, s.height, 0, 0, uni.upx2px(750), uni.upx2px((750 * s.height) / s.width));  
                            ctx.save();  
                            ctx.setFontSize(14);  
                            ctx.setTextBaseline('bottom');  
                            ctx.setFillStyle('White');  
                            ctx.fillText('1233', 10, 20);  
                            ctx.draw(false, function(d) {  
                                uni.canvasToTempFilePath(  
                                    {  
                                        canvasId: 'myCanvas',  
                                        quality: 1,  
                                        success(ss) {  
                                            console.log(JSON.stringify(ss));  
                                        },  
                                        fail(f) {  
                                            console.log(JSON.stringify(f));  
                                        }  
                                    },  
                                    temp  
                                );  
                            });  
                        }  
                    });  
                },  
                fail(f) {  
                    console.log(f);  
                }  
            });  
        }  
    }  
};  
</script>  

<style></style>  

操作步骤:

华为 HONOR 20 Liite LAR-AL00在没有升级成2020年10月1日的那个安全补丁包之前没有问题,升级完后 uni.canvasToTempFilePath走fail不走success,错误
{"errMsg":"canvasToTempFilePath:fail SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported."}

预期结果:

应该是走success能拿到图片地址

实际结果:

走的fail,{"errMsg":"canvasToTempFilePath:fail SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported."}

bug描述:

华为 HONOR 20 Liite LAR-AL00在升级完2020年10月1日的安全补丁后,uni.canvasToTempFilePath走fail不走success,错误
{"errMsg":"canvasToTempFilePath:fail SecurityError: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported."}

2020-11-27 11:41 负责人:无 分享
已邀请:
DCloud_UNI_LXH

DCloud_UNI_LXH

报错是图片跨域了
可否提供一下手机的webview版本?

  • s***@soian.com (作者)

    版本是83.0.4103.106,是升级完安全补丁包才出现的,之前没有问题

    2020-12-03 10:38

  • DCloud_UNI_LXH

    回复 s***@soian.com: 可以更新最新的alpha版HBuilderX,华为手机canvas图片跨域问题已解决

    2020-12-03 15:19

  • s***@soian.com (作者)

    回复 DCloud_UNI_LXH: 这个正式版的大概什么时候更新,alpha版有时候还会引起其他问题,,零时处理了一下

    2020-12-03 16:08

  • DCloud_UNI_LXH

    回复 s***@soian.com: alpha转正式,时间上是不确定的,一般来说没有什么问题

    2020-12-03 16:14

  • 愿随风丶飘雪

    回复 DCloud_UNI_LXH: H5+的程序也出现了这个问题 不更新app的情况下有办法解决吗

    2020-12-11 20:08

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