canvas生成表单海报
项目需要输入表单生成图片,可以使用下面方法生成海报,保存到手机,话不多说,上代码吧
HTML部分代码
<div class="dd">
<img src="data:images/bg2021.jpg" alt="">
<input type="text" class="username" id="username">
<input type="text" class="tel" maxlength="11" id="tel">
<input type="text" class="num" id="num">
<input type="text" class="time" id="time">
<button type="button" class="save" onclick="save()">提交生成</button>
</div>
<div id="app" class="app">
<div id="appmin" class="appmin"> </div>
</div>
js部分代码
<script>
function save(){
let canvas = document.createElement('canvas')
canvas.width = "375"
canvas.height = "667" //创建画布,并设置宽高
let ctx = canvas.getContext("2d") //背景图
var bgImg = './images/bg2021.jpg'; //随机背景图
var username = $('#username').val();
var tel = $('#tel').val();
var num = $('#num').val();
var time = $('#time').val(); loadImg([
bgImg
]).then(([img1])=> {
ctx.drawImage(img1, 0, 0, 1080, 1920) //画布上先绘制背景图`
//文字大小
ctx.font="52px Microsoft YaHei";
//字符str
//位置100,100
ctx.fillText(username,266,920);
ctx.fillText(tel,266,1050);
ctx.fillText(num,326,1170);
ctx.font="45px Microsoft YaHei";
ctx.fillText(time,370,1290); imageURL = canvas.toDataURL("image/png") //获取图片合并后的data-URL,参数可选图片格式,图片质量,详自查API`
let img3 = new Image()
$('#app').fadeIn();
document.getElementsByClassName("appmin")[0].append(img3)
img3.src = imageURL
canvas.style.display = "none"
$("#appmin").append(" <p>生成成功!长按图片保存</p><img src='images/close.png' class='close' onclick='colse()'/>")
}); } function loadImg(src) {
let paths = Array.isArray(src) ? src : [src]
let promise = paths.map((path) => {
return new Promise((resolve, reject) => {
let img = new Image()
img.setAttribute("crossOrigin", 'anonymous')
img.src = path
//只是更新了DOM对象,图片数据信息还未加载完成,加载资源是异步执行的,需要监听load事件的,事件发生后,就能获取资源
img.onload = () => {
resolve(img)
}
img.onerror = (err) => {
alert('图片加载失败')
}
})
})
return Promise.all(promise)
} function colse(){
$("#appmin").html('')
$("#app").fadeOut();
}
</script>
通过canvas画布生成图片,如有写的不到位还请大家指正,共同进步,奥利给!!!
canvas生成表单海报的更多相关文章
- yii2自动生成表单
视图中: 1.要use的两个文件类 use yii\helpers\Html; use yii\widgets\ActiveForm; 2.生成表单,以添加商品为例说明.注意红线区域:上传文件需要 ...
- 基于PHP和mysql的自动生成表单
开发背景:公司要求管理系统能够由管理员在前台页面管理系统表单,能够对表单进行增删改查基本操作,表单的各个字段都可以被修改.删除,可以添加新的字段,并且不影响系统正常运行,前台表单展示要由系统自动处理, ...
- 表单组件 form fastadmin(生成表单元素)
Form组件 定义文件位置: /extend/fast/Formphp 通用参数 $name 通常为我们组件的名称(name属性值),我们在后台接收时可以通过这个名称来获取到它所对应的值 $value ...
- java自动生成表单简单实例
数据库表设置 tb_form(form表单) 字段 类型 约束 说明 Id Int 主键 主键 Formid Varchar2(20) 唯一 Form表单id的值 Action Varchar2(20 ...
- vue自定义表单生成器,可根据json参数动态生成表单
介绍 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue 组件.结合内置17种常用表单组件和自定义组件,再复杂的表单都可 ...
- vue动态生成表单
vue动态生成表单 一.下拉框 <!DOCTYPE html> <html> <head> <meta charset="utf-8" / ...
- Jquery 动态生成表单 并将表单数据 批量通过Ajax插入到数据库
利用Jquery 动态生成 Table 表单 之后利用each 方法来遍历所有文本框获取文本的value值 并通过Ajax 将数据 提交到Web服务里把数据插入数据库 Html页面 <!DOC ...
- Yii 生成表单下拉选框及查询下拉选框
CHtml类参考: http://www.yiichina.com/api/CHtml#activeDropDownList-detail activeDropDownList() 方法 public ...
- Yii 2.0 ActiveForm生成表单 ,控制表单label和filed样式,filed一旦报错,前面lable颜色跟着变,看图,帮你解决
需要生成如下图的表单样式,图一:
- canvas制作表单验证码
canvas是个非常强大的组件,网页上的验证码一般都是用服务器语言制作出来的 canvas同样是可以实现这个功能的 下面请观看效果图: 步骤呢其实也很简单 HTML部分: <form actio ...
随机推荐
- k8s实战之MySQL单实例部署
前面我们学习了k8s入门系列文章,了解了k8s的一些基础概念以及怎么使用.本篇文章将进行一个小小的实战,使用k8s来部署单机版的mysql数据库,基本涵盖到前面讲到的Namespace.Pod.Dep ...
- 【大语言模型基础】GPT(Generative Pre-training )生成式无监督预训练模型原理
GPT,GPT-2,GPT-3 论文精读[论文精读]_哔哩哔哩_bilibili ELMo:将上下文当作特征,但是无监督的语料和我们真实的语料还是有区别的,不一定符合我们特定的任务,是一种双向的特 ...
- python元组(tuple)循环遍历实例分析
一 概念: 元组是有序且不可更改的集合.在 Python 中,元组是用圆括号编写的. 二 使用方法: 1 基本创建: thistuple = ("apple", "ba ...
- git 修改大小写远程分支失败
先说原因: windows大小写不敏感导致 最近由于项目需求,改回了windows开发环境,之前一直是 mac 开发环境,结果在windows环境下使用 git 时, 把某个之前大写的文件夹名称改 ...
- Performance Improvements in .NET 8 & 7 & 6 -- Thread【翻译】
线程 .NET 的最近版本在线程.并行.并发和异步等方面做出了巨大的改进,例如 ThreadPool 的完全重写(在 .NET 6 和 .NET 7 中),异步方法基础设施的完全重写(在 .NET C ...
- jQuery(常用API)
jQuery简介 1.基本使用 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- KingbaseES 的角色和权限管理
KingbaseES使用角色的概念管理数据库访问权限.为了方便权限管理,用户可以建立多个角色,对角色进行授权和权限回收,并把角色授予其他用户. 数据库初始化时,会创建一个超级用户的角色:system( ...
- 基于rv1126 rkmeida 一路多出 原理
基于rv1126 rkmeida 一路多出的坑 首先说要的是介绍一下rkmedia 相关内容 RKMedia提供了一种媒体处理方案,可支持应用软件快速开发.RKMedia在各模块基础API上做进一 ...
- SQLSERVER 的表分区(水平) 操作记录2
1 ----(非原创只是自己整理记录!!!)---------------原文地址: https://www.cnblogs.com/libingql/category/184251.h ...
- Linux中JMeter的使用
Linux中JMeter的使用 Linux版本JMeter安装 # 1.下载.安装JMeter 如果有安装包直接上传即可 wget -c https://archive.apache.org/dist ...