试着用Canvas做了时下比较流行的熊猫记仇


测试预览:


HTML:


  1. <div class="jichou_body">
  2. <div><canvas id="jichou"></canvas></div>
  3. <div>
  4. <textarea class="jichou_textarea" placeholder="输入想要记录的字,单行超过显示限制记得回车换行" oninput="drawJichou(this)"></textarea>
  5. </div>
  6. <div><a href="javascript:;" id="saveCanvas">保存</button></a>
  7. </div>


CSS:


  1. .jichou_body{
  2. text-align: center;
  3. }
  4. .jichou_textarea{
  5. width: 416px;
  6. height: 216px;
  7. }


JS:


  1. var imgSrc = [
  2. "jichouimg.png"//记仇图片路径按需填写
  3. ]
  4. var images = [];
  5. function loading(){
  6. var imgLength = imgSrc.length;
  7. var loadingNum = 0;
  8. for(var i=0;i<imgLength;i++){
  9. images[i] = new Image();
  10. images[i].src = imgSrc[i];
  11. images[i].onload = function(){
  12. loadingNum++;
  13. if(loadingNum===imgLength){
  14. initImg();
  15. }
  16. }
  17. }
  18. }
  19. //以上读取图片
  20. function initImg(){//初始化
  21. var c=document.getElementById("jichou");
  22. var ctx=c.getContext("2d");
  23. ctx.fillStyle="#ffffff";
  24. ctx.fillRect(0,0,c.width,c.height);
  25. c.width = 416;//根据记仇图片宽度写
  26. c.height = 336;//根据记仇图片高度写
  27. ctx.drawImage(images[0],0,0);
  28. saveCanvas();
  29. }
  30. function drawJichou(obj){//绘制文字
  31. var c=document.getElementById("jichou");
  32. var ctx=c.getContext("2d");
  33. var inputText = obj.value;
  34. var textArr = inputText.split("\n");
  35. var h = 336;
  36. console.log(textArr);
  37. for(var i=0;i<textArr.length;i++){
  38. h = 336+12+24*i;
  39. }
  40. c.width = 416;
  41. c.height = h;
  42. ctx.fillStyle="#ffffff";
  43. ctx.fillRect(0,0,c.width,c.height);
  44. ctx.drawImage(images[0],0,0);
  45. for(var i=0;i<textArr.length;i++){
  46. ctx.fillStyle="#000000";
  47. ctx.font="16px SimSun";
  48. ctx.fillText(textArr[i],10,336+24*i);
  49. }
  50. saveCanvas();
  51. }
  52. function saveCanvas(){//保存图片
  53. var canvas = document.getElementById("jichou");
  54. var image = canvas.toDataURL("image/png");
  55. var link = document.getElementById("saveCanvas");
  56. link.download = "记仇.png";
  57. link.href = image.replace("image/png", "image/octet-stream");
  58. }
  59. loading();