关于小程序分享功能以及画布的一些疑问!
发布于 6 年前 作者 jun28 3126 次浏览 来自 问答

根据API所说,使用分享时,imageUrl路径可以自定义,我现在有三个疑问!

一、现在有一个场景是将一个画布保存成图片,然后返回临时路径,imageUrl为这个临时路径,

因为生成图片的这个画布是不让用户看见的,所以我给画布的盒子设置了hidden=false,结果发现画布生成不了图片,只有画布显示在界面上,才能把画布范围给生成图片,这就导致imageUrl默认是 页面的截屏;

二、今日头条小程序的分享imageUrl做的十分灵活,并且在分享时并没有看到有什么画布显示出来,但是他们的imageUrl是自定义的图片路径,我暂时想可能是用到了画布,但不知是怎么解决上面的那个问题的;


三、这个场景下的画布是在页面开始渲染的时候,画布也要开始画,并且生成图片,但是当画布上存在图片时,这张图片要提前下载,也就是:

wx.downloadFile({

    url: s.data.goods.skuUrl,

    success: function (res) {

        that.setData({

            tempFilePath: res.tempFilePath

        })

    }

})

然后画布的drawImage()的路径要用到tempFilePath,问题来了,当还没有下载完成的时候,画布就开始画了,导致画布上没有这张图片,怎么办?如果用延迟来执行画布的话,在用户体验上就会留下bug(当用户一进入页面就进行分享,这时的画布还不存在),但是今日头条并不存在这个问题,给人的感觉就像是头条提前把imageUrl的图片下载完成了。


有没有大佬给解解惑~提供一些思路,感激不尽!


8 回复

把画布挪到屏幕外即可,另外我之前做过一次判断是否画完图的思路是,画图失败就执行循环画图,直到画图为止

图片有多大?我刚刚也在弄这个,可以出现

你不如直接把今日头条的程序下载来看看

非常小的图片,但是不止一张,绘图写在哪里都有点不合适哇…23333…,而且问题一就是个困扰…

试过了,不行,就好像res.tempFilePath不能直接用一样…所以我才写成

 that.setData({

            tempFilePath: res.tempFilePath

        })

不过,谢谢你的这个思路,可以搞一下…虽然很想要今日头条那种效果~

所见略同!

放在wx.downloadFile的success函数内再进行绘画不行吗?

回到顶部