javascript - 微信chooseimage接口获取图片后(canvas.toDataURL)转 base64 失败
PHP中文网
PHP中文网 2017-04-11 11:58:30
[JavaScript讨论组]

各位大神,最近开发一个手机端上传图片并裁剪的项目,流程为:

微信chooseimage接口选取图片并返回 localIds  -->  将 localIds 赋值给自己的img并操作(放大、缩小、位移等)--> 将图片画在canvas中 --> canvas.toDataURL

现在问题就卡在了最后一步生成base64码,提示画布污染,使用了网上主流解决方式 img.crossOrigin = '*' 或 img.crossOrigin = '' 或 img.crossOrigin = 'anonymous' ,都不起作用

代码(大体):

var canvas = document.getElementById("myCanvas"); 
var ctx = canvas.getContext("2d");
var imgCanvas = new Image(); 
imgCanvas.crossOrigin = '*'; 
imgCanvas.src = localIds[0]; 
ctx.drawImage(imgCanvas, 0, 0); 
***var imageData = canvas.toDataURL("image/jpeg");*** //报错

**备注:这个代码在pc端项目中使用input file 来获取图片实现没有问题,放在微信中生成的时候报错,初步怀疑与chooseimage接口的返回值有关系,这个返回的url为
weixin://resoureceid/xxxxxxxxxxxx**

各位大神,望指点一二,万分感谢

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
黄舟

因为canvas操作图片数据不能跨域啊。

如果你一定要用微信的接口来实现这个,需要先上传到微信的服务器,然后你们后端再从微信服务端获取图片,然后给你们前端使用...........

巴扎黑

楼主解决这个问题了吗?我也遇到了同样的问题,怎么解决的?

天蓬老师

也遇到过这个问题,IOS下没问题,安卓下canvas 不能 toDataURL

高洛峰

楼主请问问题解决了吗??最近做一个h5也遇到类似的问题了!求解答啊!!!!!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号