当前位置: 首页 > news >正文

生成名片格式

/*** 生成名片* @param array arr2 卡片素材* @param array strs 素材文字 数组* @param function successFn 回调函数* * */PosterCanvasCard: function(arr2, strs, successFn, errFun) {let that = this;const ctx = uni.createCanvasContext('myCanvas');ctx.clearRect(0, 0, 0, 0);/*** 只能获取合法域名下的图片信息,本地调试无法获取* */uni.getImageInfo({			src: arr2[0],success: function(res) {// const WIDTH = res.width*1.1;// const HEIGHT = res.height*1.125;// let r = 180;// let d = r * 2;// let cx = 190;// let cy = 450;// ctx.arc(cx + r, cy + r, r, 0, 2 * Math.PI);console.log(arr2)let imgIconnum = 1 let duber = 1;let fontNum = 1.5;let cardNum = 1let bgBase64 = `data:image/png;base64,*****`; // base64格式的图片let logBase = `data:image/png;base64,***2`; // logo 区域图ctx.drawImage(bgBase64, 0, 0, 355*duber + 35, 260*duber + 10); // 背景图ctx.setFillStyle("#FFFFFF");ctx.drawImage(logBase, 10*duber, 10*duber, 300*imgIconnum, 35*duber); ctx.save();ctx.restore();const CONTENT_ROW_LENGTH = 40;let [contentLeng, contentArray, contentRows] = that.textByteLength(strs[0], CONTENT_ROW_LENGTH);if (contentRows > 2) {contentRows = 2;let textArray = contentArray.slice(0, 2);textArray[textArray.length - 1] += '……';contentArray = textArray;}ctx.setTextAlign('center');ctx.setFontSize(24*fontNum);ctx.setFillStyle('#FFFFFF');let contentHh = 24 * fontNum * 1.3;for (let m = 0; m < contentArray.length; m++) {ctx.fillText(contentArray[m], 50*fontNum, 72*fontNum + contentHh * m);}ctx.setTextAlign('left')let nameW = 31* fontNum *strs[0].length;console.log(nameW);ctx.setFillStyle('#FFFFFF');ctx.setFontSize(10*fontNum);if (strs[1].length == 1) {ctx.fillText(strs[1][0], nameW, 28*fontNum + contentHh );}else if(strs[1].length == 2) {ctx.fillText(strs[1][0], nameW,  28*fontNum + contentHh );ctx.fillText(strs[1][1], nameW,  40*fontNum + contentHh);}ctx.setFontSize(12*fontNum);ctx.fillText(strs[2], 30*duber, 75*fontNum + contentHh );ctx.fillText(strs[3], 30*duber, 90*fontNum + contentHh);ctx.fillText(strs[4], 30*duber, 105*fontNum + contentHh);ctx.fillText(strs[5], 30*duber, 120*fontNum + contentHh);ctx.draw(true, function() {uni.canvasToTempFilePath({canvasId: 'myCanvas',fileType: 'png',destWidth: 1420*cardNum,destHeight: 1040*cardNum,success: function(res) {uni.hideLoading();successFn && successFn(res.tempFilePath);},fail: function(err) {uni.hideLoading();errFun && errFun(err);}})});},fail: function(err) {uni.hideLoading();that.Tips({title: '无法获取图片信息'});errFun && errFun(err);}})},

1、 背景图片或者添加的图片过大 可选择用base64格式

2、文字格式 : [

        "姓名",

        "['职位', '职位二、职位3']",

        'phone',

        'email',

        'address'

        'webUrl'

]

http://www.lryc.cn/news/402110.html

相关文章:

  • Linux常用命令(简要总结)
  • 从挑战到实战!TDengine 新能源行业研讨会要点回顾
  • Linux 之 设置环境变量
  • postgresql删除用户
  • 【java深入学习第5章】Spring Boot 统一功能的实现及处理方式
  • 【常见开源库的二次开发】基于openssl的加密与解密——单向散列函数(四)
  • 获取不重复流水号(java)
  • 【python虚拟环境管理】【mac m3】 使用pipx安装poetry
  • git使用以及理解
  • openlayers 3d 地图 非三维 立体地图 行政区划裁剪 地图背景
  • GEO数据挖掘从数据下载处理质控到差异分析全流程分析步骤指南
  • ‍我想我大抵是疯了,我喜欢上了写单元测试
  • 【Visual Studio】Visual Studio使用技巧及报错解决合集
  • 服务器数据恢复—raid5阵列热备盘同步失败导致lun不可用的数据恢复案例
  • 算法题目整合
  • 万界星空科技AI低代码平台:重塑数字化创新边界
  • iredmail服务器安装步骤详解!如何做配置?
  • 【vue深入学习第1章】Vue.js 中的 Ajax 处理:vue-resource 库的深度解析
  • JDK新特性(Lambda表达式,Stream流)
  • 【ARM】MDK-服务器与客户端不同网段内出现卡顿问题
  • c++树(一)定义,遍历
  • YOLOv5和LPRNet的车牌识别系统
  • 内容安全(深度行为检测技术、IPS、AV、入侵检测方法)
  • MySQL双主双从实现方式
  • pico+unity手柄和摄像机控制初级设置
  • vxe-grid 实现配置式form搜索条件 form搜索条件框可折叠 配置式table
  • TS相较于JS有什么优缺点
  • 【Harmony】SCU暑期实训鸿蒙开发学习日记Day2
  • vue3前端开发-执行npm run dev提示报错怎么解决
  • https 单向认证和双向认证