收藏
回答

canvas真机画不出来本地图片

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
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  这个同样也是画不出来,希望大佬们看下,我怎么弄才能在真机上快乐的把图给画粗来呢?@官方大佬

最后一次编辑于  06-08  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

7 个回答

  • CoderY-R
    CoderY-R
    07-10

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

    07-10
    赞同
    回复
  • 沙隆巴斯
    沙隆巴斯
    06-11

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

    06-11
    赞同
    回复 1
    • 命运
      命运
      06-15

      我试下,谢谢

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

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

    06-11
    赞同
    回复
  • 汤
    06-10

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

    06-10
    赞同
    回复 3
    • 命运
      命运
      06-11

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

      06-11
      回复
    • sheng
      sheng
      06-12回复命运

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

      06-12
      回复
    • 命运
      命运
      06-15回复sheng

      是的,缓存到本机的图片

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

    把代码发出来看看

    06-08
    赞同
    回复 1
    • 命运
      命运
      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,开发工具可以画,没有问题的

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

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

    06-08
    赞同
    回复 2
    • 命运
      命运
      06-09

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

      06-09
      回复
    • 汤
      06-10回复命运

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

      06-10
      回复
  • sheng
    sheng
    06-08

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

    06-08
    赞同
    回复 3
    • 命运
      命运
      06-09

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


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

      06-09
      回复
    • sheng
      sheng
      06-10回复命运

      用wx.getImageInfo


      06-10
      1
      回复
    • Zac
      Zac
      06-21回复sheng

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

      06-21
      回复