位置: IT常识 - 正文

uniapp 实现生成海报并分享给微信好友和保存到本地相册(uniapp生成h5)

编辑:rootadmin
uniapp 实现生成海报并分享给微信好友和保存到本地相册 记录uniapp 生成二维码海报并保存到本地或者分享给微信好友

推荐整理分享uniapp 实现生成海报并分享给微信好友和保存到本地相册(uniapp生成h5),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:uniapp怎么创建项目,uniapp实现生成海报背景图切换代码,uniapp生成微信小程序,uniapp生成apk,uniapp代码生成器,uniapp代码生成,uniapp代码生成,uniapp代码生成,内容如对您有帮助,希望把文章链接给更多的朋友!

文章目录记录uniapp 生成二维码海报并保存到本地或者分享给微信好友前言一、引入生成二维码的组件二、点击右侧的分享图标生成海报三:将canvas 图片转化成图片(最关键)四:保存图片或者发送好友最后前言

最近又遇到一个需求:用户需要将小程序生成的二维码海报分享给微信好友或者保存到本地,最后实现的效果如下:

一、引入生成二维码的组件uniapp 实现生成海报并分享给微信好友和保存到本地相册(uniapp生成h5)

这种网上随便找一下就有了,楼主采用的是tki-qrcode 生成二维码组件,具体的链接如下: 链接: https://blog.csdn.net/qq_45829293/article/details/123169952

二、点击右侧的分享图标生成海报

因为考虑到到时候生成的海报要分享,所以考虑用canvas的方式去绘制海报,当然你也可以试着用传统的 写法去生成,这边楼主没有去尝试过,所以这个方法也就不说了,只说canvas 的方式

核心生成代码如下(示例):

//初始化画布async __init() {uni.showLoading({title: '加载中...',mask: true})this.ctx = uni.createCanvasContext('my-canvas', this)this.canvasW = uni.upx2px(500);this.canvasH = uni.upx2px(750);//设置画布背景透明this.ctx.setFillStyle('rgba(255, 255, 255, 0)')//设置画布大小this.ctx.fillRect(0, 0, this.canvasW, this.canvasH)//绘制圆角背景this.drawRoundRect(this.ctx, 0, 0, this.canvasW, this.canvasH, uni.upx2px(18), '#FFFFFF')//小程序码// let qrcodeImg = await this.getImageInfo(this.qrcode)// this.ctx.drawImage(qrcodeImg.path,198,(((this.canvasW-hW) / 2) + hH + 135), 92, 92)//获取二维码的图片let headerImg = await this.getImageInfo(this.src)let hW = uni.upx2px(500);let hW1 = uni.upx2px(300);let hH = uni.upx2px(300);//绘制标题图 this.drawRoundImg(this.ctx, headerImg.path, uni.upx2px(100), hH / 4, hW1, hH, 8)//绘制提示this.ctx.setFontSize(14);this.ctx.textAlign = 'center' //文字居中 设置文字居中但是fillText的第二个参数必须为画布宽度一半this.ctx.setFillStyle('#A4A4A4');let sWidth = this.ctx.measureText(this.subTitle).widththis.ctx.fillText(this.subTitle, this.canvasW / 2, (((this.canvasW - hW) / 2) + hH + 70))this.ctx.setFontSize(12);this.ctx.fillText(this.subTitle1, this.canvasW / 2, (((this.canvasW - hW) / 2) + hH + 90))//绘制虚线this.drawDashLine(this.ctx, 10, (((this.canvasW - hW) / 2) + hH + 120), (this.canvasW - 10), (((this.canvasW - hW) / 2) + hH + 120), 5)//左边实心圆this.drawEmptyRound(this.ctx, 0, (((this.canvasW - hW) / 2) + hH + 120), 10)//右边实心圆this.drawEmptyRound(this.ctx, this.canvasW, (((this.canvasW - hW) / 2) + hH + 120), 10)//提示文案this.ctx.setFontSize(12);this.ctx.setFillStyle('#858585');//底部广告let BottomAdImg = await this.getImageInfo(this.abImg)// 判断一下手机系统的宽高uni.getSystemInfo({success: (res) => {if (res.windowHeight <= 568) {this.ctx.drawImage(BottomAdImg.path, uni.upx2px(20), (((this.canvasW - hW) /2) + hH + 140), uni.upx2px(460), (this.canvasH - hH) / 4)} else {this.ctx.drawImage(BottomAdImg.path, uni.upx2px(20), (((this.canvasW - hW) /2) + hH + 140), uni.upx2px(460), (this.canvasH - hH) / 3)}}});三:将canvas 图片转化成图片(最关键)

这一步是最关键的,只有这一步完成了,才能够实现分享给用户或者保存下来

代码如下:

this.ctx.draw(true, () => {// 将canvas 变成图片方便发送给好友或者保存var that = thisuni.canvasToTempFilePath({canvasId: 'my-canvas',fileType: 'jpg',x: 0,y: 0,complete: (res) => {this.canvasImg = res.tempFilePath}}, this);})四:保存图片或者发送好友

这里采用了微信原生的方式,在img 标签上加上 show-menu-by-longpress=true 就可以了。

最后如需项目demo,请联系我:1015095073@qq.com
本文链接地址:https://www.jiuchutong.com/zhishi/284090.html 转载请保留说明!

上一篇:ehSched.exe是什么进程 ehSched进程查询(ecap.exe是什么意思)

下一篇:【vue2可视化开发】新手会遇到的问题——大屏自适应(vue可视化面板怎么打开)

  • 加强当前农村地区新型冠状病毒感染疫情防控工作方案

    加强当前农村地区新型冠状病毒感染疫情防控工作方案

  • 浅谈微信营销需要要注意的31个事项(微信营销的重要性)

    浅谈微信营销需要要注意的31个事项(微信营销的重要性)

  • 花呗账单助手怎么关闭(花呗账单助手怎么删除记录)

    花呗账单助手怎么关闭(花呗账单助手怎么删除记录)

  • 电脑搜狗输入法悬浮窗不见了怎么办(电脑搜狗输入法不见了怎么调出来)

    电脑搜狗输入法悬浮窗不见了怎么办(电脑搜狗输入法不见了怎么调出来)

  • DFU模式是什么意思(dfu模式数据还在吗)

    DFU模式是什么意思(dfu模式数据还在吗)

  • 小米10如何设置抬手亮屏(小米10如何设置返回键三键)

    小米10如何设置抬手亮屏(小米10如何设置返回键三键)

  • iommu开启还是关闭(ioh是开还是关)

    iommu开启还是关闭(ioh是开还是关)

  • 交管12123教育视频不能播放(交管12123网上教育流程视频)

    交管12123教育视频不能播放(交管12123网上教育流程视频)

  • 小米手机状态栏显示hd(小米手机状态栏有个方框)

    小米手机状态栏显示hd(小米手机状态栏有个方框)

  • 微信更换实名后原来的信息还有吗(微信更换实名后有什么影响)

    微信更换实名后原来的信息还有吗(微信更换实名后有什么影响)

  • 腾讯有哪些软件(腾讯有哪些软件可以领礼包)

    腾讯有哪些软件(腾讯有哪些软件可以领礼包)

  • sim卡没有工具包服务是什么意思(sim卡没有工具包服怎么办)

    sim卡没有工具包服务是什么意思(sim卡没有工具包服怎么办)

  • 谷歌无法连接到服务器(谷歌无法连接到互联网)

    谷歌无法连接到服务器(谷歌无法连接到互联网)

  • 相互保公示审核中是什么意思(相互保公示审核中下一环节)

    相互保公示审核中是什么意思(相互保公示审核中下一环节)

  • iphonexsmax屏幕失灵(iphonexsmax手机屏幕失灵怎么办)

    iphonexsmax屏幕失灵(iphonexsmax手机屏幕失灵怎么办)

  • win7引用的账户当前已锁定(win7引用的账户已锁定且可能无法登录 没有输错密码)

    win7引用的账户当前已锁定(win7引用的账户已锁定且可能无法登录 没有输错密码)

  • 硬盘分区gpt和mbr区别(分区gpt和mbr哪个好)

    硬盘分区gpt和mbr区别(分区gpt和mbr哪个好)

  • 手机用lte怎样收费的(lte可以收短信吗)

    手机用lte怎样收费的(lte可以收短信吗)

  • word序号不让自动排序(如何让word序号不连续)

    word序号不让自动排序(如何让word序号不连续)

  • 华为mate305g手机可以用4g网吗(华为mate305g手机壳)

    华为mate305g手机可以用4g网吗(华为mate305g手机壳)

  • 手机流量断流怎么解决(手机流量断流怎么回事)

    手机流量断流怎么解决(手机流量断流怎么回事)

  • 荣耀9x有没有指纹解锁(荣耀9x有没有指纹锁)

    荣耀9x有没有指纹解锁(荣耀9x有没有指纹锁)

  • 怎样让别人打不进电话(怎样让别人打不了微信电话)

    怎样让别人打不进电话(怎样让别人打不了微信电话)

  • WPS如何设置二级下拉列表(wps如何设置二级编号)

    WPS如何设置二级下拉列表(wps如何设置二级编号)

  • 全息影像技术是什么(全息影像技术是什么专业)

    全息影像技术是什么(全息影像技术是什么专业)

  • 有关docxtemplater的知识(有关厉元朗的小说)

    有关docxtemplater的知识(有关厉元朗的小说)

  • Vue过渡和动画效果展示(案例、GIF动图演示、附源码)(vue数据加载完成显示页面过渡动画)

    Vue过渡和动画效果展示(案例、GIF动图演示、附源码)(vue数据加载完成显示页面过渡动画)

  • 增值税核算办法
  • 增值税普通发票怎么开
  • 调减加计抵减额会计分录
  • 税务信用级别为m级
  • 资金账簿减半征收印花税财税2018 50号
  • 跨省工程需要什么条件
  • 冲销暂估入库如何做会计核算?
  • 实收资本未认缴资本还用填写吗
  • 广告传媒公司安全生产标准化
  • 应扣未扣税款向谁追缴
  • 公司买了股票怎么做账
  • 股权的溢价是什么意思
  • 企业减免6%的税的营业范围有哪些?
  • 一般纳税人申请流程
  • 无形资产摊销年限平均法怎么算
  • 税种认定登记流程
  • 工资薪金总额包括职工福利费吗
  • 新购进的固定资产可以一次性抵扣
  • 增值税发票附表
  • 增值税小规模纳税人
  • win10玩游戏太卡了
  • 现金日记账余额为零要怎么填
  • 模具维修费做什么费用
  • 工商年报的纳税总额怎么查询
  • 苹果六微信
  • windows更新暂停怎么恢复
  • python中函数的可变参数有哪几种?各有什么特点?
  • php echo \n
  • 进项税额转出怎么做账务处理
  • oracle win10
  • 纳税申报方式的税务申报工作常规流程图
  • 发票开错重新开票怎么做账务处理?
  • 华为心率血压智能手表怎么样
  • 员工每月补助表怎么做
  • thinkphp6.0完全开发手册
  • 企业已开出的成本怎么算
  • php读写xml
  • 个体户一直未申报会怎样
  • 未分配利润是负数是亏损吗
  • 净收入是营业收入吗
  • 织梦自定义字段
  • 视同内销补税的财务处理
  • 外贸企业出口退税会计分录怎么做
  • 什么时候过路费减半收费
  • 品种法成本核算的程序有哪几步?
  • 待转销项税额转出
  • 建筑劳务公司何去何从
  • 专用发票什么意思
  • 代收运输费的会计分录
  • 退了的社保能申请回来吗
  • 费用分摊科目
  • 单位购买防疫物资请示
  • 公司人才账户有什么用
  • 小规模购入固定资产怎么做账
  • 开了发票就要交税吗?
  • sql server 2012r2
  • Mysql5.7在Centos6中的安装方法
  • ubuntu安装超详细教程
  • 设置自动清理缓存电脑
  • ftp 550错误
  • linux系统文件在哪个目录
  • 搞定immutable.js详细说明
  • 如何设置edittext控件中的文字
  • 易信安卓手机版
  • 纹理烫男
  • js时间计算相减
  • javascript基于什么的语言
  • js的文件操作
  • Linux CentOS系统下安装node.js与express的方法
  • js简单实现鼠标移动后面文字也移动
  • 深入理解计算机系统
  • python 文件操作,读,写,指定位置
  • 安卓启动器修改
  • android studio 安装好后怎么在桌面找到
  • 一般纳税人公司注销流程
  • 快递代缴的关税有税单吗
  • 电子税务局新户报道怎么弄
  • 大米包装有二道封口线正常吗
  • 车辆购置税怎么买
  • 税务津贴提高1100
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设