前端canvas画海报

效果图

引用

想直接看效果的可以不传值

<QrcodePoster style="width: 100%;" ref="poster"></QrcodePoster>

 点击按钮上绑定点击事件代码如下

//分享海报
sharePoster() {//获取带参数二维码并传递this.is_show_model = false;// this.$refs.poster.showCanvas('../../static/healthPunch/code.jpg');this.$refs.poster.showCanvas();
}

下面是海报(页面 QrcodePoster)组件的全部代码,可以在这个基础上写你想要的,因为这个保存图片之后清晰度正常。

<template><view class="content" v-if="isShow" @click.stop="isShow=false"><canvas :style="'width:'+canvasW+'px;'+'height:'+canvasH+'px;'" canvas-id="mycanvas" id="mycanvas"></canvas><view><view class="save-btn" @click.stop="saveImage"><imagesrc="https://yiben01.oss-cn-hangzhou.aliyuncs.com/img/88774b97dd59933a6d5121ca7ba6718c7c6603bd_100.png"mode=""></image><text>保存到相册</text></view></view></view>
</template><script>export default {props: {headerImg: {default: 'https://yiben01.oss-cn-hangzhou.aliyuncs.com/img/e9c557905980d0f7d4ccaf280af1ba73c4b92a5c_52.jpg',type: String},abImg: {type: String,default: '../static/code.jpg'},week: {default: '星期四',type: String},date: {default: '08',type: String},year: {default: '08.2022',type: String},day: {default: '25',type: String},realName: {default: '张七七',type: String},color: '#ffffff',maskImg: {type: String,default: '../static/mask.png'}},data() {return {canvasW: 0,canvasH: 0,ctx: null,isShow: false,qrcode: '',system_info: '',codeimage: require('../static/code.jpg')}},mounted() {},onReady() {this.ctx = uni.createCanvasContext('mycanvas', this)},methods: {//显示showCanvas(qrcode) {this.isShow = truethis.qrcode = qrcodethis.__init()},async __init() {uni.showLoading({title: '加载中...',mask: true})var system_info = uni.getSystemInfoSync(); //屏幕宽高this.ctx.beginPath();this.ctx.save(); // 先保存状态 已便于画完圆再用//获取标题图片let headerImg = await this.getImageInfo(this.headerImg)var width = system_info.screenWidth;let hW = system_info.windowHeight / system_info.windowWidth >= 1.7 ? (width * 0.8) : (width * 0.7);let hH = (hW * headerImg.height / headerImg.width);let leftwidth = (width - hW) / 2this.canvasW = hW;this.canvasH = hH;//设置画布大小this.ctx.fillRect(leftwidth, 40, this.canvasW, this.canvasH)//绘制标题图this.drawRoundImg(this.ctx, headerImg.path, 0, 0, parseFloat(hW) + 1,parseFloat(hH) + 1, 0)// 遮罩层this.drawRoundImg(this.ctx, this.maskImg, 0, (this.canvasH - this.canvasH / 2 / 2), this.canvasW,parseFloat(this.canvasH / 2 / 2) + 1, 0)// 二维码this.drawRoundImg(this.ctx, this.abImg, (this.canvasW / 2 + this.canvasW / 2 / 2), (this.canvasH - this.canvasH / 2 / 2 / 2 / 2 / 2 - 55), 55, 55, 55 / 2)//绘制标题this.ctx.setFontSize(8); //设置标题字体大小this.ctx.setFillStyle(this.color); //设置标题文本颜色this.ctx.font = 'normal bold 10px sans-serif';// this.ctx.fillText(this.week, 21, 115)this.ctx.fillText(this.week, uni.upx2px(54), this.canvasH / 2 / 2 + 8)this.ctx.setFontSize(12);this.ctx.setFillStyle(this.color);this.ctx.fillText(this.year, uni.upx2px(54), this.canvasH / 2 / 2 - 12)this.ctx.setFontSize(40);this.ctx.setFillStyle(this.color);this.ctx.fillText(this.date, uni.upx2px(54), this.canvasH / 2 / 2 - 38)this.ctx.setFontSize(12);this.ctx.setFillStyle('#969696');this.ctx.textAlign = "center"; //文字居中this.ctx.fillText('长按识别二维码', hW / 2, 350)this.ctx.font = 'normal bold 16px sans-serif';this.ctx.setFillStyle('#FFFFFF');// 昵称  this.ctx.fillText(this.realName, uni.upx2px(54), this.canvasH - this.canvasH / 2 / 2 / 2 / 2 / 2 - 30)this.ctx.font = '12px normal';this.ctx.setFillStyle('#FFFFFF');this.ctx.fillText('坚持打卡', uni.upx2px(54), this.canvasH - this.canvasH / 2 / 2 / 2 / 2 / 2 - 10)this.ctx.font = 'normal bold 18px sans-serif';this.ctx.setFillStyle('#FFFFFF');this.ctx.fillText(this.day, this.ctx.measureText('坚持打卡').width+uni.upx2px(54), this.canvasH - this.canvasH / 2 / 2 /2 / 2 / 2 - 10)this.ctx.font = '12px normal';this.ctx.setFillStyle('#FFFFFF');this.ctx.fillText('天', 135, this.canvasH - this.canvasH / 2 / 2 / 2 / 2 / 2 - 10)this.ctx.draw()uni.hideLoading();},//带圆角图片drawRoundImg(ctx, img, x, y, width, height, radius) {ctx.beginPath()ctx.save()// 左上角ctx.arc(x + radius, y + radius, radius, Math.PI, Math.PI * 1.5)// 右上角ctx.arc(x + width - radius, y + radius, radius, Math.PI * 1.5, Math.PI * 2)// 右下角ctx.arc(x + width - radius, y + height - radius, radius, 0, Math.PI * 0.5)// 左下角ctx.arc(x + radius, y + height - radius, radius, Math.PI * 0.5, Math.PI)// ctx.stroke()ctx.clip()ctx.drawImage(img, x, y, width, height);ctx.restore()ctx.closePath()},//获取图片getImageInfo(imgSrc) {return new Promise((resolve, reject) => {uni.getImageInfo({src: imgSrc,success: (image) => {resolve(image);},fail: (err) => {reject(err);}});});},//保存图片到相册saveImage() {let that = thisuni.canvasToTempFilePath({fileType: 'jpg',canvasId: 'mycanvas',quality: 1,complete: (res) => {uni.saveImageToPhotosAlbum({filePath: res.tempFilePath,success(res) {uni.showToast({title: '已保存到相册',icon: 'success',duration: 2000})setTimeout(() => {that.isShow = false}, 2000)},fail(err) {uni.showModal({content: '检测到您没打开获取信息功能权限,是否去设置打开?',confirmText: "确认",cancelText: '取消',success: (res) => {if (res.confirm) {uni.openSetting({success: (res) => {// console.log(res);// uni.showToast({// 	title: "请重新点击分享保存图片~",// 	icon: "none"// });}})} else {uni.showToast({title: "保存失败,请打开权限功能重试",icon: "none"});}}})}})}}, this);}}}
</script><style scoped lang="scss">.content {position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: rgba(0, 0, 0, .4);display: flex;flex-direction: column;justify-content: center;align-items: center;z-index: 9999;}.save-btn {margin-top: 24rpx;padding: 15rpx 40rpx;border-radius: 50rpx;display: flex;flex-direction: column;justify-content: space-around;align-items: center;}text {font-size: 24rpx;}image {width: 90rpx;height: 90rpx;margin-bottom: 16rpx;}
</style>

最终效果图如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/48691.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不用找,你想要的手抄报 小报印刷模板素材都在这里

手抄报 小报印刷模板素材&#xff0c;我常用的爱给网这个网站就挺好的&#xff0c;免费下载&#xff0c;资源多&#xff0c;品质优&#xff0c;而且资源类型都很齐全&#xff0c;要是大家需要可以看一下&#xff0c;真的不骗人&#xff01;一键打包下载&#xff0c;快捷方便! …

快速应用计算机制作pop,【爆炸贴图片手绘字体】爆炸贴手绘技巧

【www.okfie.com--计算机英语】 爆炸贴&#xff0c;作为海报之外的另一种手绘POP表现形式&#xff0c;被广泛应用于各类卖场。市面上所售卖的爆炸贴样式非常多&#xff0c;其所对应的功能及书写难度也各不相同。今天小编就给大家介绍一下常见爆炸贴的用途及书写建议。 计算机数…

做春节海报没有思路?传统节日年味十足,PSD分层模板,给你灵感!

随着国力的增强&#xff01; 越来越多国潮传统文化被挖掘起来&#xff0c; 中国风设计也越来越受到关注 传统节日年味十足的喜庆红色祈福用到现代平面设计中 不仅可以丰富设计的视觉效果 增加设计的文化韵味&#xff0c;还能体现设计的民族性。 优图网 www.uppsd.com 带来…

2022DASCTF MAY 出题人挑战赛 Writeup

文章目录 WEBPower Cookie魔法浏览器getme MISC不懂PCB的厨师不是好黑客卡比噪音rootme神必流量 WEB Power Cookie 设置Cookie: admin1;即可 魔法浏览器 把源码中的JS拿到Console运行&#xff0c;得到一个UA getme Apache/2.4.50&#xff0c;去年时间出的Apache 远程代码…

节日仪式感海报PSD分层模板,快来pick一下!

你心目中有仪式感的节日记忆 是什么样的呢&#xff1f; 一束鲜花&#xff1f; 一份精美礼盒&#xff1f; 快来pick一下&#xff0c;代表情感输出总要的传统情怀书信的魅力&#xff01; 花语祝福感恩格子信纸简约节日海报 格子信纸感恩鲜花花语祝福节日海报 感恩祝福格子信纸…

自动判卷 、答题卡识别、六级答题卡客观题自动判卷系统1.0

自动判卷 、答题卡识别、六级答题卡客观题自动判卷系统1.0 一、前言 二、代码 三、处理原图片、以及效果图片 四、总结 一.引言&#xff1a; 1.本程序设计想法来源于一次四六级考试&#xff0c;因为六级没有好好准备&#xff0c;裸考上阵&#xff0c;结果肯定是看不懂哈哈…

电商促销海报PSD模板|临摹优秀,设计好的banner广告从试炼开始!

每当你打开淘宝时&#xff0c;首页的banner广告总是会弹出你近期浏览过的或者是购买过的同类产品&#xff0c;这就是淘宝善于使用个人大数据&#xff0c;从而达到精准推广的效果。 而设计师在设计banner广告图之前&#xff0c;一般会参考之前投放的结果数据&#xff0c;例如设计…

端午节海报|端午节海报设计素材图片大全

2021年端午节放假时间安排表出来了&#xff0c;端午节海报也要准备起来啦&#xff01;快来把这组端午节海报收藏起来吧&#xff01; 所有素材均来自易图网&#xff0c;需要的话可以点击链接下载噢。 1、端午节粽子上市宣传海报 2、情浓端午清新海报设计 3、水墨风端午节海报设…

2023年AP考试报名开始,附详细报名流程和注意事项,社会考生速来

9月19日&#xff0c;美国大学理事会College Board 宣布大陆2023年AP考试报名正式开启。在2022-23学年&#xff0c;大学理事会继续与Prometric合作管理国内的AP考试报名和考务工作。 目前&#xff0c;2023年5月举行的AP考试报名工作已经正式启动&#xff0c;下面是2023年AP考试…

手绘风海报怎么做?手绘素材在哪里找?

打开浏览器搜索“易图网”&#xff0c;这个素材网站有很多手绘风作品和素材&#xff0c;原创设计&#xff0c;为您的设计增添无限灵感&#xff0c;比如下面几张海报就是最近更新的手绘风作品。 保护动物手绘动物绿色植物合集海报 保护动物海报手绘简单卡通森林动物海报 2022春…

用ps做一张海报

用ps做的一张海报 作者&#xff08;张福林&#xff09;撰写时间&#xff1a;2019年 1月 17日 见截图 &#xff08;海报里传达的地址、网址、电话号码&#xff0c;是因为创作需要而找来的请勿当真&#xff09; &#xff08;这是我在2018年12月二十几号做的一个关于元旦促销的海…

使用Photoshop制作圣诞海报

使用Photoshop制作圣诞海报 我们最终制作效果如下&#xff1a; 1.新建文档 文件——》新建&#xff0c;宽1134px&#xff0c;高850px&#xff0c;分辨率为300命名为圣诞海报的文档 2.设置背景渐变 选中背景图层&#xff0c;选择工具箱的渐变工具&#xff0c;在属性栏找到渐变…

计算机专业迎新晚会主题海报,如何制作迎新晚会宣传海报?推荐使用迎新海报素材!...

迎接新生晚会是校园内热烈欢迎新生儿必备的节目。在晚会节目上有才能的学生可以展示自己才艺表演。学生会为了让更多的学生参加晚会&#xff0c;都会提前张贴晚会宣传海报&#xff0c;告知学生晚会的时间、地点以及节目内容。在这里&#xff0c;小编想告诉大家&#xff0c;迎新…

用这套偷懒笔刷5分钟一副国潮插画海报,轻松玩转海报设计

好东西又来了 这次给大家带来的是 新国风飞鹤月亮祥云笔刷合集86款 像仙鹤&#xff0c;海浪&#xff0c;灵芝&#xff0c;鱼骨纹&#xff0c;灯笼&#xff0c;月亮&#xff0c;云纹 这里面都有 主要是它还兼容PS和ipad使用 在插画当中&#xff0c;现在最火的也属于国潮&#xf…

今日份PS练习|玉桂狗海报

可爱的玉桂狗来了哦&#xff01; 第一步 新建白色背景图层,把默认颜色换成黑白,滤镜-渲染-云彩,滤镜-模糊一高斯模糊;图像-调整-色调分离-拉动数值一确定 第二步 选择魔棒工具,调整数值,根据颜色选择色块,选中后按altdelete,填充颜色,改变后&#xff0c;复制一层&#xff0c…

今日份PS练习|长春花蓝海报设计稿预览

第一步 新建图层&#xff0c;用白色画笔画一个圆&#xff0c;笔刷硬度为0&#xff0c; 新建图层&#xff0c;滤镜-渲染-云彩&#xff0c;将云彩透明度改为30&#xff0c;再合并图层 第二步 将图层&#xff0c;滤镜-像素化-晶格化&#xff0c;调整数值。 将图层&#xff0c;…

如何用ps设计出一张吸引人眼球的创意节日海报?

不管做什么海报&#xff0c;重要的都是表达&#xff0c;节日海报更主要的是表达一种情怀。 比如中秋&#xff0c;月亮肯定是必备的元素&#xff0c;它表达的是中华民族几千年来对亲人、朋友、爱人的情思&#xff0c;所以海报上使用月亮元素非常常见&#xff1b;再比如国庆&…

探究ChatGPT在医学影像领域中的发展前景

医学影像技术是当今医疗领域的重要组成部分&#xff0c;广泛应用于临床诊断、治疗和研究等方面。然而&#xff0c;医学影像所涉及到的数据量非常大&#xff0c;难以直接进行人工分析和处理。因此&#xff0c;如何快速、准确地对医学影像数据进行自动化处理和分析&#xff0c;成…

斯坦福发布大模型Alpaca:A100上训3小时,性能比较GPT-3.5,被挤爆!

源&#xff5c;新智元 Meta的LLaMA模型开源&#xff0c;让文本大模型迎来了Stable Diffustion时刻。今天&#xff0c;斯坦福发布了一个由LLaMA 7B微调的模型Alpaca&#xff0c;训练3小时&#xff0c;性能比肩GPT-3.5。 一觉醒来&#xff0c;斯坦福大模型Alpaca&#xff08;草泥…

数控数据采集跨平台免授权扎克(mazak)西门子(Siemens)海德汉(heidenhain)广数(GSK)、凯恩帝(knd)、三菱、海德汉、兄弟、哈斯、宝元、新代、发那科(Fanuc)、华中

目录 前言 一、各类数控机床采集方案 1.Fanuc发那科数控 2.广数数控 3.西门子数控 4.MAZAK马扎克数控 5.HASS哈斯数控 6.新代数控 7.KND凯恩帝数控 8.Brother兄弟数控 9.HNC华中数控 10.三菱数控 11.台湾LNC宝元数控 12.HEIDENHAIN 海德汉数控 13.行业数控系统数…