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

建设网站海报文案建设专题网站

建设网站海报文案,建设专题网站,装饰行业网站建设方案,广西建设厅办事大厅网站之前看到这种的举牌小人的图片觉得很有意思#xff0c;最近有时间所以就尝试写写看。 在线链接 https://linyisonger.github.io/H5.Examples/?name./080.Canvas%20%E4%B8%BE%E7%89%8C%E5%B0%8F%E4%BA%BA.html 生成效果 实现代码 !DOCTYPE html html lang… 之前看到这种的举牌小人的图片觉得很有意思最近有时间所以就尝试写写看。 在线链接 https://linyisonger.github.io/H5.Examples/?name./080.Canvas%20%E4%B8%BE%E7%89%8C%E5%B0%8F%E4%BA%BA.html 生成效果 实现代码 !DOCTYPE html html langenheadmeta charsetUTF-8meta http-equivX-UA-Compatible contentIEedgemeta nameviewport contentwidthdevice-width, initial-scale1.0link relstylesheet href./assets/global.cssstyle.content {display: flex;}.content textarea {width: 300px;resize: none;border-radius: 0;outline: none;border-right-width: 0;}.content .save-btn {padding: 10px;background-color: #eefdfd;font-size: 15px;cursor: pointer;user-select: none;border-color: rgb(133, 133, 133);border-width: 1px; }.content .save-btn:disabled {background-color: #b3b3b3;}/style /headbodydiv classcontenttextarea rows2 placeholder请输入需要生成的举牌文字/textareabutton classsave-btn disabled保存图片/button/divcanvas idpreview/canvasscript typemoduleimport { Randoms } from https://gcore.jsdelivr.net/npm/3r/tool/lib/randoms.js;/** type {HTMLCanvasElement} */let canvas document.querySelector(#preview)let ctx canvas.getContext(2d)/*** 随机人物*/function randomPerson() {let length 41;let width 80;let height 165let index Randoms.int(0, length)return {sx: index * width,sy: 0,sw: width,sh: height,}}/*** 绘制字符*/function drawChar(char, x, y, w, h) {let charCenterX x 38let charCenterY y 28ctx.drawImage(image, ...Object.values(randomPerson()), x, y, w, h)ctx.font 18px Helveticactx.textAlign centerctx.textBaseline middlectx.save();ctx.translate(charCenterX, charCenterY);ctx.rotate(Math.PI / 6);ctx.fillText(char, 0, 0)ctx.restore();}/*** 渲染文字* 1.分行决定渲染图片大小* 2.逐行偏移*/function drawText(text) {ctx.clearRect(0, 0, canvas.width, canvas.height)let rows text.split(\n)// 预处理let drawCharParams []let maxX 0;let maxY 0;let width 80;let height 165;for (let i 0; i rows.length; i) {let cols rows[i].split()let offsetX (rows.length - i - 1) * (width / 2)let offsetY i * (width / 2);for (let j 0; j cols.length; j) {const char cols[j];if (char ) continue // 空字符跳过 let x j * 40 offsetX;let y j * 15 offsetY;maxX Math.max(maxX, x)maxY Math.max(maxY, y)drawCharParams.push([char, x, y, width, height])}}// 更新画布大小canvas.setAttribute(style, width:${maxX width}px;height:${maxY height}px)canvas.width canvas.clientWidth;canvas.height canvas.clientHeight;// 处理for (let i 0; i drawCharParams.length; i) {drawChar(...drawCharParams[i])}}let image new Image()image.src ./assets/upup.pnglet textareaDom document.querySelector(.content textarea)textareaDom.addEventListener(change, (e) {let text e.target.valuedrawText(text)})let saveBtnDom document.querySelector(.save-btn)saveBtnDom.addEventListener(click, (e) {let a document.createElement(a);a.href window.URL.createObjectURL(base64ToBlob(canvas.toDataURL(image/png, 0.8)));a.setAttribute(download, 举牌小人.png);a.click();})image.onload () {saveBtnDom.disabled false}// base64 转 Blobfunction base64ToBlob(base64) {let arr base64.split(,);let mime arr[0].match(/:(.*?);/)[1];let bstr atob(arr[1]);let n bstr.length;let u8arr new Uint8Array(n);while (n--) {u8arr[n] bstr.charCodeAt(n);}return new Blob([u8arr], { type: mime })}/script /body/html在线预览 https://linyisonger.github.io/H5.Examples/ 源码仓库 https://github.com/linyisonger/H5.Examples.git
http://www.eeditor.cn/news/124846/

相关文章:

  • 高端摄影网站模板下载福田网站推广
  • 网络培训师长沙公交优化
  • 想买手表在哪个网站买是正品网站开发公司成都
  • 网站 多少篇文章才能上线网站建设为什么学flash
  • 设计网站都有什么作用是什么代理注册一个公司价格
  • 网站开发的投标案例pageadmin自助建站系统
  • 网站模板教程装潢公司网站源码php
  • 网站开发和后期维护费用wordpress 七牛云图床
  • 郑州网站制作网页上海招标网
  • 网站建设的相关知识南昌公司建设网站费用
  • 安徽省建设工程造价管理协会网站成都好网站
  • 衡水网站建立要多少钱建设网站的多少钱
  • 用文件传输协议登录网站做电商是什么工作
  • 北京网站优化网厦门公司注册代理
  • 做视频网站 许可证现在的网站推广是怎么做的
  • 网站建设 部署与发布视频教程最新新闻消息事件
  • 宁波seo网站建设费用福建网站建设有限公司
  • jsp做网站视频教程网站开发专业分析
  • 河北建设厅网站官网青州网站
  • 柳州网站建设排行榜培训课程设计方案
  • 温州网站外包网站建设域名费
  • 蛋糕店网站建设西安关键词优化软件
  • 中国建设银行官网站电话湖南招聘网
  • 织梦怎么做淘客网站四川专业网站建设公司
  • 杭州大的做网站的公司做一个商城网站
  • flask做的网站项目在百度做推广需要网站
  • 廉江手机网站建设天津猎头公司
  • 怎么做自己的品牌网站访问一个网站的过程
  • 网站建设wuliankj微信官方公众号
  • 小说类型网站怎么做旅游网站开发意义