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

  • 不含税价格计算方法
  • 增值税开票软件ukey版
  • 小规模结转增值税会计科目有哪些
  • 金税三期的内容是什么
  • 什么是税务代理人
  • 一般纳税人购销印花税减半吗
  • 企业结算时待摊费用怎么办
  • 外销客户付的模具费如何入账
  • 报税时资产总额怎么填
  • 红字信息表撤销失败B80095
  • 上传附报资料在哪下载
  • 贸易型出口退税流程
  • 公司收承兑贴现的会计分录
  • 在建工程无发票怎么说明原因
  • 联营和合营的区别
  • 教育费附加计费单位
  • 刚开始建账银行有存款怎么录
  • 零报税企业怎么做汇算清缴
  • 清洁服务经营范围有哪些
  • 案例讲解:当年度未及时取得有效凭证的相关成本、费用涉税处理
  • 股票价格变化的原因
  • 银行端查询缴税凭证在哪里缴费
  • 事业单位固定资产管理办法
  • 计提工资大于实发工资
  • 利息收入需要开票吗
  • 员工收到货款不交公司,法律规定
  • 高新技术企业取消认定
  • win10设置变成竖排
  • php生成php文件
  • php怎么自学
  • 商业一般纳税人标准
  • 总分机构什么时候备案
  • 股东权益增加额/期初净经营资产
  • vue登录页面点击登录进入首页
  • 一亩地是多少平方?
  • php中session和cookie
  • 瓦普拉克
  • 企业租赁房屋怎么开票
  • 什么情况下可以赔偿n+1
  • 手把手教你如何从一无所有到财务自由
  • 公司注册认缴的期限一般是多少
  • 主动学习(Active Learning,AL)的理解以及代码流程讲解
  • php无限级分销
  • 纸质增值税专用发票申领
  • 财务报表季报应付职工薪酬是指三个月工资累计还是
  • 母子公司资产划转的涉税问题
  • 手工账结转
  • 个税申请退税流程
  • 淘宝天猫开票是普票还是专票
  • 负债总计是负数
  • discuz设置门户
  • 出口退税转内销还是转免税好
  • 资产负债表的种类
  • 车辆保险费印花税计税金额含进项税吗
  • 上年度固定资产费用化了,财报怎么算
  • 收到客户回款 应收账款减少还是增多
  • 现金存入银行凭证怎么写
  • 其他应付款个人往来的涉税风险
  • 小规模纳税人可以转为一般纳税人吗?
  • 购进农产品抵扣的税率
  • 税金及附加是什么账户
  • 职工教育经费开专票可以抵扣吗
  • 开来发票没有付款可以进入费用吗?
  • 会计所说的内账外账
  • 应收账款的账户余额
  • 醒狗音乐免费下载歌曲2017最新版
  • Fedora25踏上Wayland的路上讲解
  • win10预览版和正式版区别
  • centos7如何修改用户名
  • 开机一直提醒ctrl+alt+del
  • xp系统如何去掉开机登陆界面
  • 检测电脑屏幕
  • win10如何关闭windows
  • androidserviceslibrary设置
  • 安卓骰子游戏
  • jquery日期控件onchange事件
  • jquery绑定keyup
  • python语言解析
  • unity3drpg游戏
  • jquery设置iframe的src
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设