1***@qq.com
1***@qq.com
  • 发布:2019-10-21 18:39
  • 更新:2021-03-05 09:09
  • 阅读:2528

muiAPP使用h5+的camera和gallery返回的图片链接进行canvas的toDataURL就会报: Script error.filename:lineno:0

分类:MUI
mui

这部分代码一直没有改动的,近期发现就莫名其妙报错了。

MUI APP 采用h5+的拍照和相册的API
返回的链接进行canvas的toDataURL就会报错:Script error.filename:lineno:0

调用拍照和相册的代码如下

                    //拍照 ===========================  
        function getCameraImg() {  
            var c = plus.camera.getCamera(); //获取摄像头对象  
            c.captureImage(function(e) {  
                plus.io.resolveLocalFileSystemURL(e, function(entry) {  
                    var url = entry.toLocalURL();  
                    var imgName = entry.name;  
                    console.log("拍照图片地址:" + url + "拍照图片名称:" + removeFileSuffix(imgName) + " //" + imgName);  
                    bg_img_set(url, removeFileSuffix(imgName));  
                    uploadMatchPicture(url, imgName);  
                }, function(e) {  
                    plus.nativeUI.alert(e.message);  
                });  
            }, function(s) {  
                mui.toast("取消拍照");  
                console.log("error" + s);  
            }, {  
                filename: "_doc/camera/"  
            });  

     //本地相册选择 ============================================  
        function getGalleryImg() {  
            if(mui.os.plus) {  
                //手机相册  
                plus.gallery.pick(function(e) {  
                    if(e.files.length > 4) {  
                        mui.toast('一次性最多上传4张');  
                        return false;  
                    }  
                    for(var i in e.files) {  
                        var imgUrl = e.files[i];  
                        var imgName = imgUrl.substr(imgUrl.lastIndexOf('/') + 1);  
                        if(i == 0) {  
                            bg_img_set(imgUrl, removeFileSuffix(imgName));  
                        }  
                        uploadMatchPicture(imgUrl, imgName);  
                    }  
                }, function(e) {  
                    mui.toast("取消选择图片");  
                }, {  
                    filter: "image",  
                    multiple: true  
                });  
            } else {  
                //有固定控件的change事件触发;  
            }  
        };  

重点是调用后改方式返回的图片链接进行canvas压缩的toDataURL就会报错:Script error.filename:lineno:0
代码如下:

            //将图片压缩转成base64    
    function getBase64Image(img) {            
        var canvas = document.createElement("canvas");  
        var width = img.width;  
        var height = img.height;  
        var defualtvalue = 1500;  
        //console.log(width+"___"+height);  
        if(width > defualtvalue && height > defualtvalue) {  
            if(width > height) {  
                if(width > defualtvalue) {  
                    height = Math.round(height *= defualtvalue / width);  
                    width = defualtvalue;  
                }  
            } else {  
                if(height > defualtvalue) {  
                    width = Math.round(width *= defualtvalue / height);  
                    height = defualtvalue;  
                }  
            }  
        }  
        canvas.width = width; /*设置新的图片的宽度*/  
        canvas.height = height; /*设置新的图片的长度*/             
        var ctx = canvas.getContext("2d");            
        ctx.drawImage(img, 0, 0, width, height); /*绘图*/  
        console.log("运行到这来的时候不会出错")  
        //这里使用toDataURL输出64位图片  
        var dataURL = canvas.toDataURL("image/png", 0.8);     
        console.log("没有输出该句,报错了");  
        return dataURL;  

    }  

这是什么原因呢,头发都要掉光了。麻烦帮我看下是什么原因呢 为啥使用h5+API后toDataURL就报错。我直接采用网上链接的图片进行canvas压缩就不会报错。

2019-10-21 18:39 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

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

    因为是mui APP不是采用插件,使用plus的bitmap可以生成base64图片。但是我们就是想用canvas进行裁剪生成图片,不是单单生成base64图片。那这样子情况又该怎么裁剪了呢??

    2019-10-22 14:30

  • DCloud_heavensoft

    回复 1***@qq.com: 换回uiWebview

    2019-10-22 16:56

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

    回复 DCloud_heavensoft: 要是以后苹果停止使用UIWebview的应用,那这种情况该怎么办呢?目前换回uiWebview只能解决目前问题呢?

    2019-10-22 17:12

2***@qq.com

2***@qq.com

目前我出现的问题和你一样的,请问找到解决办法了吗

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

    官方说换回uiWebview,我现在就先暂时换回来了。要是之后苹果停止用了也就用不了了,问了官方也没有回复。

    2019-10-29 17:35

chinahappybeer

chinahappybeer - china happy beer

目前我出现的问题和你一样的,请问找到解决办法了吗

1***@qq.com

1***@qq.com

大哥问题解决来吗 我也一样出现这个

bishuihanshan

bishuihanshan

我也遇到这个问题了,还不知道怎么处理,mark一下

前端开发者福建

前端开发者福建

我不太确定问题是不是同一个,不过你可以尝试一下,在图片渲染完成后在调用getBase64Image

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