效果图镇楼:

技术依赖:

  • 弹窗 (vant-weapp 提供的 van-popup 组件)
  • 海报图 (wx-canvas-2d 工具)

弹窗组件的使用方式可以点击上面链接查看,本篇主要讲解海报图绘制方法。

首先下载依赖

npm install -S wx-canvas-2d

下载完依赖后也不要忘记用微信开发者工具构建一下npm。
使用 wx-canvas-2d 前,先要准备一个容器,请在需要绘制海报图的地方创建一个canvas,如下:

<canvastype="2d"id="poster-canvas"class="poster-canvas"style="width: 100%; height: 100%;"disable-scroll="{{ true }}"
/>

接下来就可以开始编写js代码部分了。第一步,先引入,然后实例化对象。

import WxCanvas2d from 'wx-canvas-2d'// 实例化对象
const canvas = new WxCanvas2d()

第二步,在canvas加载完毕后创建画布

// 创建
canvas.create({query: '.poster-canvas', // 必传,canvas元素的查询条件rootWidth: 750, // 参考设备宽度 (即开发时UI设计稿的宽度,默认375,可改为750)bgColor: '#fff', // 背景色,默认透明component: this, // 自定义组件内需要传 thisradius: 16 // 海报图圆角,如果不需要可不填
}).then(res => {// console.log(res)
}).catch(err => {console.log('[WxCanvas2d] Canvas create fail: ', err)
})

设置了 rootWidth 后,接下来绘制内容时填入的数值就直接是设计图上的实际值了。
最后一步,绘制内容,在你需要绘制的地方调用绘制方法 draw

// 绘制
canvas.draw({series: [{type: 'image', // 图片url: item.img,x: 0,y: 0,width: 600,height: 600,mode: 'aspectFill' // 图片的裁剪方式,参考小程序 image 标签的 mode 属性},{type: 'text',text: item.name,x: 30,y: 620,color: '#222',fontSize: 30,fontWeight: 'bold',lineHeight: 42},{type: 'text',text: '¥',x: 30,y: 683,color: '#F25238',fontSize: 24,fontWeight: 'bold',lineHeight: 33},{type: 'text',text: item.price,x: 49,y: 672,color: '#F25238',fontSize: 34,fontWeight: 'bold',lineHeight: 48},{type: 'text',text: item.desc,x: 30,y: 787,color: '#969696',fontSize: 24,width: 390,lineHeight: 33,ellipsis: 2},{type: 'line',lineStyle: {dash: [7, 3],color: '#E9E9E9',width: 1},line: [{point: [30, 740]},{point: [30 + 540, 740]}]},{type: 'image',url: '../../img/qrcode.png',x: 450,y: 760,width: 120,height: 120}]
}).then(() => {console.log('绘制成功!')
}).catch(err => {console.log('绘制失败!', err)
})

type 属性是必填的,zIndex 属性可有可无。

基本上可以做到海报图需要的大多数功能了,绘制图片,绘制线段,绘制文字,文字换行,文字超出省略号,绘制矩形。
选择这个工具的优势主要在于其满足了绝大部分海报图所需的功能,而且非常小巧,使用方便,容易维护,对于有 2MB 限制的小程序来说,工具的体积大小是非常重要的一个指标。

除此以外,wx-canvas-2d 工具还十分人性化的集成了保存图片到相册的功能。

// 保存图片到相册
canvas.saveToAlbum({destWidth: 600,destHeight: 900
}).then(res => {wx.showModal({content: '图片已保存到相册,赶紧晒一下吧~'})
}).catch(err => {wx.showModal({content: '图片保存失败'})
})

看完有收获的点个赞再走~

在微信小程序中实现生成海报图并保存到相册相关推荐

  1. 微信小程序纯前端生成海报并保存本地

    需求 公司开发微信小程序,有一个海报页面,需要用户点击生成海报,可以将该该swipe-item 生成一个带二维码的图片,最终由纯前端实现! 技术调研 因为小程序的打包限制,不可能将所有的图片都放在代码 ...

  2. uniapp实现微信小程序端动态生成海报

    背景: 基于uniapp实现微信小程序中商品详情的海报生成与保存 效果图: 思路: 首先把海报上需要的内容准备好,比如用户头像,商品信息,二维码等.需要注意的是,因为二维码是动态生成的,所以需要后端传 ...

  3. 微信小程序中使用ECharts--折线图、柱状图、饼图等

    微信小程序开发者的反馈,表示他们强烈需要像 ECharts 这样的可视化工具.但是微信小程序是不支持 DOM 操作的,Canvas 接口也和浏览器不尽相同. 因此,ECharts 团队和微信小程序官方 ...

  4. 微信小程序实现画布生成海报功能

    微信小程序可以通过使用 标签来实现生成海报的功能.以下是基本实现步骤: 1.在 WXML 文件中创建一个 标签,并设置其宽度和高度属性.' <canvas canvas-id="myC ...

  5. 记一次微信小程序canvas 2d 生成海报问题

    因项目需要,需要制作海报分享. 如: 事情总是不是那么顺利,canvas生成海报生成中遇到各种奇葩问题.一开始是 wx.canvasToTempFilePath 中获取不到canvas对象,调用返回  ...

  6. 微信小程序利用canvas生成海报-------图片为网络图片

    根据我们老总的业务需求,迫不得已,我做了这个canvas绘制的海报,感觉基本上可以解决现在海报所遇到的大部分问题了,献给那些没有做过的小伙伴们,话不多说,先上我做的效果 上代码 <style&g ...

  7. uniapp开发微信小程序使用painter生成海报

    最初绘制海报时是准备用canvas绘制,但是绘制遇到各种问题,且难度颇高,最后也没能绘制出来,也尝试过使用微信官方的 wxml-to-canvas,但需要传入wxml和样式,太为难我这个小小的后端开发 ...

  8. 微信小程序中base64图片的显示与保存

    当我们拿到如下base64格式的数据时: 显示 使用image标签,src属性添加data:image/png;base64, (注意:若imgData返回数据中含有data:image/png;ba ...

  9. uniapp微信小程序开发,生成海报插件painter的使用

    1.引入painter插件 下载地址:https://github.com/Kujiale-Mobile/Painter 代码下载后,将component中的painter文件夹放入项目wxcompo ...

最新文章

  1. 细胞如何获得秩序?除了形成细胞器,还可以发生相分离
  2. 源码安装vlc播放器
  3. 使用IDEA搭建第一个SpringBoot程序
  4. 环境调试: RuntimeWarning: Couldn‘t find ffmpeg or avconv - defaulting to ffmpeg, but may not work warn(“
  5. Nginx加密与上游服务器的TCP网络通信
  6. 为什么要使用Elasticsearch?
  7. 数据库上云如何顺利进行?6位专家直播助你一臂之力
  8. java服务器客户端文件,客户端服务器文件传输Java
  9. C#反射取得方法、属性、变量
  10. cocos2d-x中使用plist文件总结
  11. Python-Scikit learn保存机器学习训练的模型
  12. 音频杂音问题_OBS直播出现杂音或者电流声、没声音或者调大音量等操作
  13. 阿里巴巴四十大盗计算机病毒,泄密 阿里巴巴和四十大盗 全文 - 故事365
  14. 破解 --- apk文件解析
  15. vlan划分-通过物理接口实现vlan通信
  16. 如何合理的拆分微服务
  17. Python win32com初步实现将批量的Word文件信息统计写入同一Excel表格中
  18. 循环神经网络教程第二部分-用python,numpy,theano实现一个RNN
  19. 自动复制吱口令html,【月入六万】吱口令,网页自动复制,进支付宝提示领红包源码...
  20. 如何命名计算机快捷键,重命名的快捷键,教您重命名的快捷键是什么

热门文章

  1. 用CCleaner替换了Windows优化大师
  2. Windows 10 安装 uTorrent 官网下载 uTorrent 时弹出“The 'utorrent' installation process requires Internet conn”
  3. 他们说的局域网,广域网,外网,内网是什么
  4. 拼题A基础篇31 字符,字母的输出问题
  5. sdcms php版手册,目录结构及说明
  6. 如何成为一名全栈语音识别工程师?
  7. 句柄无效及拒绝访问错误;
  8. Libnids--函数调用顺序之nids_run()
  9. 为国庆献礼:无人智能系统,守护祖国海空长城
  10. InfiniBand技术和架构