资讯专栏INFORMATION COLUMN

小程序echarts+canvasdrawer实现页面转化图片并保存到相册

Doyle / 3383人阅读

摘要:小程序实现页面转化图片并保存到相册场景小程序测试活动,实现雷达图展示不同的结果微信头像二维码测试结果文字,最终绘制出一张图片用户保存相册。圆形头像建议切镂空图覆盖,,有很难实现效果建议查看微信小程序社区的帖子。

小程序echarts+canvasdrawer实现页面转化图片并保存到相册

</>复制代码

  1. 场景:小程序测试活动,实现echarts雷达图展示不同的结果、微信头像、二维码、测试结果文字,最终绘制出一张图片用户保存相册。考虑到开发时间及各种坑使用了canvasdrawer组件,其中开发过程中遇到的一些问题总结。
1.安卓部分机型图片输出不执行

</>复制代码

  1. 安卓输出图片错位问题同样异步解决

  2. measureText注意线上版本库1.9.1+

</>复制代码

  1. //业务层代码
  2. let that = this
  3. // 保存图片到临时的本地文件
  4. //注意chart初始化实例不能输出图片
  5. const ecComponent = this.selectComponent("#mychart-dom-graph");//获取echarts组件
  6. ecComponent.canvasToTempFilePath({
  7. //安卓机型此处不会成功回调
  8. success: res => {
  9. that.eventDraw(res.tempFilePath)
  10. },
  11. fail: res => console.log("失败", res)
  12. });
  13. //ec-canvas.js源码
  14. canvasToTempFilePath(opt) {
  15. if (!opt.canvasId) {
  16. opt.canvasId = this.data.canvasId;
  17. }
  18. const system = wx.getSystemInfoSync().system
  19. ctx.draw(true, () => {//此处微信api在安卓部分机型不会回调 ,相反ctx.draw(false)清空画布会执行,导致echarts已经绘制画布清空,输出为空图片
  20. wx.canvasToTempFilePath(opt, this);
  21. });
  22. }
  23. //修改后
  24. canvasToTempFilePath(opt) {
  25. if (!opt.canvasId) {
  26. opt.canvasId = this.data.canvasId;
  27. }
  28. const system = wx.getSystemInfoSync().system
  29. if (/ios/i.test(system)) {
  30. ctx.draw(true, () => {
  31. wx.canvasToTempFilePath(opt, this);
  32. });
  33. } else {//针对安卓机型异步获取已绘制图层
  34. ctx.draw(true,()=>{
  35. //断点打印依旧不会执行setTimeout(() => {wx.canvasToTempFilePath(opt, this);}, 1000);}});
  36. ctx.draw(true);
  37. setTimeout(() => {//延迟获取
  38. wx.canvasToTempFilePath(opt, this);
  39. }, 1000);
  40. }
  41. },
2.onReady动态修改echarts[options]失败

</>复制代码

  1. onReady: function() {
  2. let that = this;
  3. setTimeout(() => {//异步解决echarts实例没有加载成功的无法设置options
  4. option.series[0].data[0].value = that.data.canvasListData
  5. chart.setOption(option);
  6. }, 500);
  7. }
  8. //提前声明变量
  9. let chart = null;
  10. var option = {}
3.网络图片需下载到本地,注意配置downloadFile合法域名,尤其是微信头像链接 4.相册授权拒绝后,button不会再次弹出授权弹窗,openSetting强制打开设置开启授权。 5.圆形头像建议切镂空图覆盖,rect,clip有bug很难实现UI效果

建议查看:微信小程序社区的帖子。

6.cancvas要画2倍图,否则输出图片模糊 参考

ECharts 的微信小程序版本。

小程序在安卓手机上绘制canvas,文字错乱。

drawImage画图在Android真机上显示空白

安卓 canvas组件draw函数的回调不执行

wx.canvasToTempFilePath安卓手机无法生成图片

安卓手机获取不到canvasToTempFilePath路径的图片

canvasdrawer

最后

</>复制代码

  1. HTML页面可以使用 html2canvas转换节点生成图片保存

基于html2canvas实现网页保存为图片及图片清晰度优化

TIPS

</>复制代码

  1. 由于时间限制,很多地方理解不够深刻,瑕疵很多,欢迎提出

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100380.html

相关文章

  • 程序echarts+canvas 合成图片保存下载

    摘要:再网上参考了一篇文章小程序实现页面转化图片并保存到相册根据这篇文章的内容,修改源码,针对安卓机型写了兼容的配置,如果你的页面只有一个图表,就完全可以成功转换了,如果是多个请修改的源码,方法选择就可以了。 最近做的小程序项目在echarts合成图片的时候遇到了一些问题,综合了很多网友的经验,在此分享一下我的经历,如有错误,欢迎指正。 1.在小程序中引入echarts组件请参考 echa...

    neu 评论0 收藏0
  • 一个时快速搭建微信程序

    摘要:第一步搭开发环境首先,我们需要在本地搭建好微信小程序的开发环境。在微信小程序中,所有的网络请求受到严格限制,不满足条件的域名和协议无法请求。第五步配置微信小程序云端示例镜像中,已经部署好了,但是还需要在下修改配置中的域名证书私钥。 「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试。可是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面)。本以为没有...

    izhuhaodev 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<