最近要实现画图功能,但但但是,在开发工具上完全好好的可以用canvas画图,完全没问题,当我用真机测试的时候,问题来了
画图不让用网络图片,好,我用wx.downloadFile读取一下好了,到了真机上地址是这样:wxfile://tmp/wx68e4b799a4ccb6b9.o6zAJs4Y_8JAdYkFBuglKhBDObeA.YHvlFqy1oJF89f1a87530346f68db646229ab6dd8c67.jpeg
在开发工具上地址是这样:
只有前面的协议不同,所以真机上画 不出来,ctx.drawImage()也没有报错,然后我把wxfile换成http再画,也画不出来,同样,没报错,当然我的重点不是报不报错,重点是画不粗来。
我把从服务端拿来的二维码base64格式的转成了本地文件,地址是wxfile://user/temp_image.jpeg 这个同样也是画不出来,希望大佬们看下,我怎么弄才能在真机上快乐的把图给画粗来呢?@官方大佬
楼主解决了吗? 遇到相同问题
楼主解决了吗,我这边二进制流 用canvas 转成 本地临时文件也是这个情况
安卓机型画图片不能设置透明色,否则真机画不出来
我试下,谢谢
可以画的,需要把网络图片下载到本地,我开始也是开发工具上可以,体验版不行,后来打开调试才发现是域名没有在白名单,加进去就可以了
你的问题解决了没有?我也碰上这个问题了,模拟器可以真机也可以,但是发布体验版就不行了画不出来
还没有,你好了也说下吧,谢谢
你是怎么画的,用canvas画本地图片吗?
是的,缓存到本机的图片
把代码发出来看看
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,开发工具可以画,没有问题的
图片确保是https, 并且加入到业务域名里面
真机读取的地址地wxfile开头的,换成http不行,再说了,域名是user,这个怎么个加到业务域名里呢?
他说的是你网络下载图片的域名要加入白名单
完全可以画,估计是画的方法不对
ctx.drawImage(maImg, scWidth - 95, scHeight - 95, 85, 85)
maImg真机地址是:wxfile://user/temp_5225.jpeg,画不出来,换成http也画不出来,不知道怎么回事
用wx.getImageInfo
对的,把网络图片转成本地图片再绘制,不然工具上可以看到,手机上看不到