15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > canvas 绘制证书

canvas 绘制证书

时间:2023-07-22 00:15:01 | 来源:网站运营

时间:2023-07-22 00:15:01 来源:网站运营

canvas 绘制证书:最近公司的新项目要给参与答题的同学颁发一个奖状,老大说有公司有一套比较成熟的系统,但不是由前端来完成。我想了一下这东西用canvas就能搞定。之后就根据自己现有的知识来搞了一下。先上效果图

在网上搜了一下发现有好多说绘制出来的图片跟文字特别模糊的,我个人没有遇到这个问题。具体我也不清楚他们是怎么回事,但是感觉他们应该没有设置canvas的width和height导致。

<template> <div> <canvas id="sz" width="800" height="600"></canvas> <button id="saveBtn" type="button" @click="saveImg">保存图片</button> </div></template>设置canvas的width和height属性,这个属性会决定你下载下来的图片的尺寸。

new一个image对象作为画板的背景, 通过ctx.drawImage()设置画板的背景图片的起始宽高。

注意要在image加载之后进行绘制,不然图片会不显示。

同样的文字的绘制也要在image加载后执行,在image加载之前绘制的话会被图片遮盖住。这样的话基本上就可以实现通过canvas绘制一张证书了。

creatDarw() { //创建画板 let c1 = document.querySelector('#sz') let ctx = c1.getContext('2d') var img = new Image(); img.src = require("../assets/images/model.png") img.onload = function() { ctx.drawImage(img,0,0,800,600) ctx.font = "36px 微软雅黑"; ctx.fillStyle = "#EC5E37"; ctx.fillText("恭喜法外狂徒 张三 获得一等奖!",160,330); } } 好了绘制好的图片怎么让用户下载下来呢?这里我是利用a标签的download属性来实现的。

canvas的toDataURLrl()属性会返回经过base64编译过得图片路径,我们可以通过这个路径得到绘制好的图片。

saveImg() { //下载保存图片 /* let c1 = document.querySelector('#sz') let urlData = c1.toDataURL() let img = new Image() img.src = urlData; */ let downloadA = document.createElement('a'); downloadA.setAttribute('download','奖状') downloadA.href = urlData; downloadA.click() }移动端不能通过a 标签下载,一般是长按图片进行下载。但canvas不是image不能调起图片下载的接口,可以使用上面注释掉的内容在页面中append一张图片,把canvas画板删除掉,在页面上展示一张图片,进行图片的下载。

到这还有很多问题,比如fillText不能自动换行,之后再进行解决。

关键词:证书,绘制

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭