联系qq:240973924
我也遇到同样问题,canvas.toDataURL("image/jpeg") 失败,想问一下
canvas渲染,我都是加载的本地图片(logoImage都是工程里图片),
ctx.drawImage(logoImage, img.width - 760, img.height - 280, 660, 192);
ctx.drawImage(avatarImage, img.width - 740, img.height - 420, 140, 140);
ctx.fillText(app.getUser().crmUserName, img.width - 600, img.height - 300 ); //选择位置
ctx.drawImage(weatherImage, 250, 600, 160, 160);
怎么才能canvas.toDataURL("image/jpeg")成功
var imgdata = null;
try{
imgdata = canvas.toDataURL("image/jpeg");//这里会报错
}catch(e){
//报错了
console.log(e);
m.alert(e);
}
var filename = '' new Date().getTime() '-' Math.floor(Math.random()*100000 1) '.jpg';
var bitmap = new plus.nativeObj.Bitmap("watermark");
bitmap.loadBase64Data(imgdata, function() {
console.log("加载Base64图片数据成功");
waiting.close();
// 将webview内容绘制到Bitmap对象中
bitmap.save("_doc/camera/" filename, {
overwrite: true,
//format: 'jpg',
quality: 75
}, function(info) {
plus.nativeUI.toast("相片已保存成功");
bitmap.clear();
void plus.gallery.save("_doc/camera/" filename, function() {}, function() {});
console.log('保存图片成功:' JSON.stringify(info));
}, function(e) {
plus.nativeUI.toast("相片保存失败");
bitmap.clear();
console.log('保存图片失败:' JSON.stringify(e));
});
}, function(e) {
bitmap.clear();
waiting.close();
alert('加载Base64图片数据失败:' JSON.stringify(e));
});
}, 1000);
守护 (作者)
谢谢回复。
实际上我只需要在原图上截取的那个部分图片的base64字符串,一般使用canvas.toDataURL这个会得到;我不需要下载图像到本地;
关键的问题是如何从原图得到要截取的那部分的base64对于的字符串?
2020-02-25 18:20
DCloud_UNI_GSQ
回复 守护: 之前说的那个插件,你看下里面的代码
2020-02-25 18:22
守护 (作者)
回复 DCloud_UNI_GSQ: 看了,那个需要一个图片文件的路径,我这个没有路径,因为是原图中的部分区域,不是路径
2020-02-25 18:24
7***@qq.com
回复 DCloud_UNI_GSQ: 同有这个问题,那个插件无法满足现在的场景,不是对本地图片进行base64转换,而是使用cropper.js对本地图片进行裁剪,得到了canvas,现在的问题是,这个由原图片裁剪后得到的canvas,怎么能生成base64
2020-03-14 22:55