位置: 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可视化面板怎么打开)

  • 目前什么笔记本电脑比较好用(目前什么笔记本最好)(目前什么笔记本的屏幕最好)

    目前什么笔记本电脑比较好用(目前什么笔记本最好)(目前什么笔记本的屏幕最好)

  • 工行流水手机银行可以导出吗(工行流水手机银行 密码)

    工行流水手机银行可以导出吗(工行流水手机银行 密码)

  • 手机中病毒了怎么办(手机中病毒了怎么弄)

    手机中病毒了怎么办(手机中病毒了怎么弄)

  • 苹果8可以复制门禁卡吗(苹果8可以复制卡吗)

    苹果8可以复制门禁卡吗(苹果8可以复制卡吗)

  • 美团的超值联盟商家在哪里(美团超值联盟券怎么取消)

    美团的超值联盟商家在哪里(美团超值联盟券怎么取消)

  • 手机号被注销了微信怎么登录(手机号被注销了怎么恢复)

    手机号被注销了微信怎么登录(手机号被注销了怎么恢复)

  • 表格自动乘怎么弄(表格如何自动乘)

    表格自动乘怎么弄(表格如何自动乘)

  • iphone x有指纹识别吗(苹果x有没指纹)

    iphone x有指纹识别吗(苹果x有没指纹)

  • 微信更新完怎么变成黑色(微信更新完怎么恢复)

    微信更新完怎么变成黑色(微信更新完怎么恢复)

  • 手机tf卡是什么卡(手机的tf卡槽能达到什么速度)

    手机tf卡是什么卡(手机的tf卡槽能达到什么速度)

  • 复制按什么键(复制按什么键粘贴按什么键)

    复制按什么键(复制按什么键粘贴按什么键)

  • 荣耀v30什么时候上线(荣耀v30什么时候出的)

    荣耀v30什么时候上线(荣耀v30什么时候出的)

  • iphone8p听筒声音变得特别小怎么回事(苹果8p听筒声音)

    iphone8p听筒声音变得特别小怎么回事(苹果8p听筒声音)

  • 互联网和万维网区别是什么(互联网和万维网之间的关系)

    互联网和万维网区别是什么(互联网和万维网之间的关系)

  • 苹果xsmax是英特尔基带吗(xsmax都是英特尔吗)

    苹果xsmax是英特尔基带吗(xsmax都是英特尔吗)

  • ps下载不了怎么办(ps下载不下来)

    ps下载不了怎么办(ps下载不下来)

  • realmex2pro下巴多大(realme q2pro下巴宽度)

    realmex2pro下巴多大(realme q2pro下巴宽度)

  • flask和django的对比(flask和django的对比 云计算)

    flask和django的对比(flask和django的对比 云计算)

  • pr剪辑里怎么瘦脸(pr视频怎么瘦身)

    pr剪辑里怎么瘦脸(pr视频怎么瘦身)

  • 反向问号怎么打手机(电脑反向问号怎么打)

    反向问号怎么打手机(电脑反向问号怎么打)

  • 为什么手机应用会停止运行(为什么手机应用很少,内存却满了)

    为什么手机应用会停止运行(为什么手机应用很少,内存却满了)

  • 显示器最高多少hz(显示器最高多少赫兹)

    显示器最高多少hz(显示器最高多少赫兹)

  • 党员e先锋密码怎么找(党员e先锋密码个人能否找回)

    党员e先锋密码怎么找(党员e先锋密码个人能否找回)

  • 如何在数据透视表中对数据进行计算(如何在数据透视表中增加一行)

    如何在数据透视表中对数据进行计算(如何在数据透视表中增加一行)

  • 全国税收调查表企业表怎么填
  • 代扣个税怎么做凭证
  • 关税纳税申报时间
  • 二手房交易需缴纳的费用
  • 差旅费抵税怎么算
  • 小规模公司开票税点怎么算
  • 银行回单手续费分录
  • 劳务成本会计科目
  • 员工继续教育培训费计什么科
  • 独立核算的优点
  • 同一张记账凭证可以出现多笔分录吗
  • 赡养老人专项附加扣除可以是爷爷奶奶吗
  • 贴现利息的计算题
  • 汽车销售公司办公室周末上班吗知乎
  • 计提增值税电费怎么算
  • 减免能减多久
  • 运费发票是含税还是不含税
  • 递延所得税怎么计提
  • 股东以股抵债是否合法
  • 年末利润分配会计处理
  • 所得税费用什么时候结转
  • 销售旧房增值税销售额怎么算
  • 自购销售和委托代购
  • 购房房产税如何支付
  • 营改增步骤
  • 1697510840
  • 继承和赠与算夫妻共同财产吗
  • 民法典对知识产权的定义
  • 上网慢怎么解决
  • linux abi
  • PHP:xml_set_element_handler()的用法_XML解析器函数
  • 建筑公司支付的预付款担保保函费怎么做账?
  • 赠送客户的商品怎么入账
  • 进程调度算法例题分析
  • 购买土地前期费用怎么入账
  • 支付保证金需要附件
  • 无形资产的摊销年限不得低于多少年
  • 涉税服务实务会花多少时间完成
  • 固定资产的使用寿命超过一个会计年度
  • php解析配置文件
  • php安装swoole扩展
  • rest for api
  • javascript获取数组索引
  • react modal
  • shell和pycharm
  • 哪些可以计入研发费用
  • 待抵扣进项税额是什么情况下用的
  • python unittest和pytest
  • mysql主从配置详解
  • 现金及现金等价物包括哪些科目
  • 计划成本法有什么差异
  • 公司市场部门有什么职位
  • 银行理财产品算银行存款吗
  • 其他业务收入冲减应付账款
  • 计提税金及附加的金额如何算
  • 销售方开具的红字专票怎么入账
  • 新手会计做账怎么做账
  • 固定资产会计核算方法
  • 安装sql2008时出现以下错误
  • win7提示oxcooooo98
  • linux系统中的输入输出分为三类
  • centos 界面安装
  • centos和rhel
  • win7打开注册表的命令
  • 隐藏文件或文件夹
  • Win7防火墙怎么设置
  • pop3是什么意思中文
  • div li
  • Unity3D游戏开发pdf
  • unity gui
  • Python中强大的命令行库click入门教程
  • ugui粒子ui层级
  • bootstrap日期控件背景为白
  • js window.screen
  • js图片轮播和点击切换
  • 物流企业需要缴税吗
  • 爱信诺开票系统怎么安装
  • 国家税务总局查询发票
  • 小规模企业降税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设