HTML5自定义文字背景生成签名档

朱雀 2020-06-25 09:09 967阅读 0赞
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>HTML5自定义文字背景生成签名档DEMO</title>
  6. <style>
  7. body{
  8. background-color: #ddd;-webkit-user-select:none;font-family:hychf,"黑体";margin: 0;
  9. }
  10. @font-face{
  11. font-family:hychf; src:url('fonts/hychf.ttf');
  12. }
  13. canvas{
  14. border: 1px solid #777;display: block;margin: auto;
  15. }
  16. #imgdownload{
  17. width: 100px;height: 30px;display: block;text-decoration: none;text-align: center;line-height: 30px;border: 1px solid #000;border-radius: 6px;
  18. }
  19. </style>
  20. </head>
  21. <body>
  22. <canvas id="mycanvas" width="320" height="256"></canvas>
  23. <label for="mytxt1">内容:
  24. <input type="text" id="mytxt1" value="HTML5TRICKS" />
  25. </label>
  26. <label for="dbg">文字背景图:
  27. <select id="dbg">
  28. <option value="bg4.png">bg4.png</option>
  29. <option value="bg5.png">bg5.png</option>
  30. </select>
  31. </label>
  32. <input type="button" id="send" value="生成签名档" />
  33. <a href="#" id="imgdownload">下载图片</a>
  34. <script>
  35. var mycanvas=document.getElementById("mycanvas");
  36. var mytxt1=document.getElementById("mytxt1");
  37. var dbg=document.getElementById("dbg");
  38. var imgdownload=document.getElementById("imgdownload");
  39. var ctx=mycanvas.getContext("2d");
  40. var bg=new Image();
  41. var bg2=new Image();
  42. bg.src='imgs/bg3.png';
  43. bg2.src='imgs/bg4.png';
  44. bg2.οnlοad=ShowImg;
  45. function ShowImg(){
  46. bg2.src='imgs/'+dbg.value;
  47. ctx.drawImage(bg,0,0,mycanvas.width,mycanvas.height);
  48. ctx.save();
  49. var fpadd=0;//规定内间距
  50. var fsz=Math.ceil((mycanvas.width-fpadd*2)/mytxt1.value.length);//根据字数计算字体大小
  51. ctx.font=fsz+"px hychf";
  52. var tw=ctx.measureText(mytxt1.value).width;//文字真实宽度
  53. var ftop=(mycanvas.height-fsz)/2-30;//根据字体大小计算文字top
  54. var fleft=(mycanvas.width-tw)/2+16;//根据字体大小计算文字left
  55. ctx.textBaseline="top";//设置绘制文本时的文本基线。
  56. var woodfill = ctx.createPattern(bg2,"repeat");//设置图片为笔刷
  57. ctx.fillStyle=woodfill;
  58. ctx.shadowBlur=10;//阴影程度
  59. ctx.shadowOffsetX=20;
  60. ctx.shadowOffsetY=20;
  61. ctx.shadowColor="rgba(0,0,0,1)";
  62. ctx.fillText(mytxt1.value,fleft,ftop);
  63. ctx.lineWidth = 1;
  64. ctx.strokeStyle ="rgba(255,255,255,0.4)";
  65. ctx.strokeText(mytxt1.value, fleft, ftop);
  66. ctx.restore();
  67. }
  68. document.getElementById("send").οnclick=ShowImg;
  69. imgdownload.οnclick=function(){
  70. if(!mytxt1.value){alert('请输入内容');return false;}
  71. this.href = mycanvas.toDataURL();
  72. this.target = "_blank";
  73. this.download =mytxt1.value + ".png";
  74. }
  75. </script>
  76. </div>
  77. </body>
  78. </html>

发表评论

表情:
评论列表 (有 0 条评论,967人围观)

还没有评论,来说两句吧...

相关阅读