这部分代码一直没有改动的,近期发现就莫名其妙报错了。
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压缩就不会报错。
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