V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mikoshu
V2EX  ›  问与答

微信 jsapi 选择本地图片放入 canvas 安卓居然报跨域??

  •  
  •   mikoshu · 2019-08-23 10:51:00 +08:00 · 1583 次点击
    这是一个创建于 1004 天前的主题,其中的信息可能已经有所发展或是发生改变。

    微信 js-sdk 接口 chooseImage 选择本地图片后生成的 localid 可以直接放入 img 标签里预览,这时候如果需要对图片裁切后生成 base64code IOS 和微信开发者工具正常 但是安卓居然提示 "Uncaught DOMException: Failed to execute 'toDataURL' on 'HTMLCanvasElement': Tainted canvases may not be exported"

    试过 img.setAttribute("crossOrigin",'Anonymous') 无效

    估计现在只能将图片上传到微信服务器然后让后端去微信那边下载图片再返回一个允许跨域的图片 url 给我,来实现图片裁切了....

    6 条回复    2019-08-23 14:31:47 +08:00
    TomVista
        1
    TomVista  
       2019-08-23 11:01:09 +08:00
    盲猜 file:url
    mikoshu
        2
    mikoshu  
    OP
       2019-08-23 11:37:03 +08:00
    @TomVista 错 是 wxLocalResource://imageidxxxxxxx
    mikoshu
        3
    mikoshu  
    OP
       2019-08-23 11:38:09 +08:00
    @TomVista 不过估计也是被微信反代为 file:url
    ESeanZ
        4
    ESeanZ  
       2019-08-23 11:48:04 +08:00
    FileReader 读取文件直接装 base64 canvas 导入 base64 的图片再做裁剪 裁剪后再转 base64 到得最终结果
    nihiue
        5
    nihiue  
       2019-08-23 14:27:51 +08:00 via Android
    楼上正解
    nihiue
        6
    nihiue  
       2019-08-23 14:31:47 +08:00 via Android
    还有个备选方案
    const img = new Image();
    img.setAttribute('crossOrigin','Anonymous')
    img.src = 'XXXXXXXX';
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1063 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:42 · PVG 04:42 · LAX 13:42 · JFK 16:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.