收藏
回答

canvas真机画不出来本地图片

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.downloadFile CanvasContext.drawImage 工具 7.0.4 2.7.1

最近要实现画图功能,但但但是,在开发工具上完全好好的可以用canvas画图,完全没问题,当我用真机测试的时候,问题来了



画图不让用网络图片,好,我用wx.downloadFile读取一下好了,到了真机上地址是这样:wxfile://tmp/wx68e4b799a4ccb6b9.o6zAJs4Y_8JAdYkFBuglKhBDObeA.YHvlFqy1oJF89f1a87530346f68db646229ab6dd8c67.jpeg


在开发工具上地址是这样:

http://tmp/wx68e4b799a4ccb6b9.o6zAJs4Y_8JAdYkFBuglKhBDObeA.YHvlFqy1oJF89f1a87530346f68db646229ab6dd8c67.jpeg


只有前面的协议不同,所以真机上画 不出来,ctx.drawImage()也没有报错,然后我把wxfile换成http再画,也画不出来,同样,没报错,当然我的重点不是报不报错,重点是画不粗来。

我把从服务端拿来的二维码base64格式的转成了本地文件,地址是wxfile://user/temp_image.jpeg  这个同样也是画不出来,希望大佬们看下,我怎么弄才能在真机上快乐的把图给画粗来呢?@官方大佬

回答关注问题邀请回答
收藏

9 个回答

  • 禾店短剧系统
    禾店短剧系统
    2021-05-31

    如果是网路图片的话必须用上wx.getImageInfo 把图片转成本地临时路径才可以

    2021-05-31
    有用 1
    回复
  • 好想告诉你
    好想告诉你
    2020-11-04

    楼主解决了吗? 遇到相同问题


    2020-11-04
    有用
    回复
  • CoderY-R
    CoderY-R
    2019-07-10

    楼主解决了吗,我这边二进制流 用canvas 转成 本地临时文件也是这个情况

    2019-07-10
    有用
    回复
  • 沙隆巴斯
    沙隆巴斯
    2019-06-11

    安卓机型画图片不能设置透明色,否则真机画不出来

    2019-06-11
    有用
    回复 1
    • 2019-06-15

      我试下,谢谢

      2019-06-15
      回复
  • 严海涛
    严海涛
    2019-06-11

    可以画的,需要把网络图片下载到本地,我开始也是开发工具上可以,体验版不行,后来打开调试才发现是域名没有在白名单,加进去就可以了

    2019-06-11
    有用
    回复
  • 汤
    2019-06-10

    你的问题解决了没有?我也碰上这个问题了,模拟器可以真机也可以,但是发布体验版就不行了画不出来

    2019-06-10
    有用
    回复 3
    • 2019-06-11

      还没有,你好了也说下吧,谢谢

      2019-06-11
      回复
    • sheng
      sheng
      2019-06-12回复

      你是怎么画的,用canvas画本地图片吗?

      2019-06-12
      回复
    • 2019-06-15回复sheng

      是的,缓存到本机的图片

      2019-06-15
      回复
  • 长安
    长安
    2019-06-08

    把代码发出来看看

    2019-06-08
    有用
    回复 1
    • 2019-06-09

      ctx.drawImage(bgImg, 10, 10, scWidth - 20, scHeight - 120)

      let grd = ctx.createLinearGradient(10, scHeight - 120 - 150, 10, scHeight - 120)

      grd.addColorStop(0, 'rgba(0, 0, 0, 0)')

      grd.addColorStop(1, 'rgba(0, 0, 0, 0.5)')

      ctx.setFillStyle(grd)

      ctx.fillRect(10, scHeight - 120 - 150, scWidth - 20, 200)

      ctx.restore()

      ctx.draw(false, function (e) {

      //第八步:生成图片并预览

      // o.saveImageToPhotosAlbum();

      // wx.hideLoading()

      });


      上面的bgImg地址如果是真机的话,是wxfile://.......jpeg,开发工具中是http://......jpeg,开发工具可以画,没有问题的

      2019-06-09
      回复
  • 邱一欢
    邱一欢
    2019-06-08

    图片确保是https, 并且加入到业务域名里面

    2019-06-08
    有用
    回复 2
    • 2019-06-09

      真机读取的地址地wxfile开头的,换成http不行,再说了,域名是user,这个怎么个加到业务域名里呢?

      2019-06-09
      回复
    • 汤
      2019-06-10回复

      他说的是你网络下载图片的域名要加入白名单

      2019-06-10
      回复
  • sheng
    sheng
    2019-06-08

    完全可以画,估计是画的方法不对

    2019-06-08
    有用
    回复 3
    • 2019-06-09

      ctx.drawImage(maImg, scWidth - 95, scHeight - 95, 85, 85)


      maImg真机地址是:wxfile://user/temp_5225.jpeg,画不出来,换成http也画不出来,不知道怎么回事

      2019-06-09
      回复
    • sheng
      sheng
      2019-06-10回复

      用wx.getImageInfo


      2019-06-10
      1
      回复
    • Zac🦹🏻
      Zac🦹🏻
      2019-06-21回复sheng

      对的,把网络图片转成本地图片再绘制,不然工具上可以看到,手机上看不到

      2019-06-21
      回复
登录 后发表内容