zoukankan      html  css  js  c++  java
  • canvas 制作表情包

    canvas 制作表情包

    代码如下。

      1 <!DOCTYPE html>
      2 
      3 <html>
      4 <head>
      5   <title>表情制作</title>
      6     
      7   <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
      8   <meta name="mobile-web-app-capable" content="yes">
      9   <meta name="apple-mobile-web-app-capable" content="yes">
     10   <style>
     11     #image-container {
     12       display: flex;
     13     }
     14   </style>
     15 </head>
     16 
     17 <body>
     18   <script>
     19    
     20     
     21   </script>
     22 
     23   <div>
     24     <input type="file" id="file" />  
     25   </div>
     26   <div id="image-container">
     27     <canvas width="500" height="500"></canvas>
     28     <div>
     29       <span>Top Line:</span><br/>
     30       <input id="topLineText" type="text"><br/>
     31       <span>Bottom Line:</span><br/>
     32       <input id="bottomLineText" type="text"><br/>
     33       <button id="saveBtn">Save</button>
     34     </div>
     35   </div>
     36   <script>
     37     function textChangeListener (evt) {
     38       var id = evt.target.id;
     39       var text = evt.target.value;
     40       
     41       if (id == "topLineText") {
     42         window.topLineText = text;
     43       } else {
     44         window.bottomLineText = text;
     45       }
     46       
     47       redrawMeme(window.imageSrc, window.topLineText, window.bottomLineText);
     48     }
     49     
     50     function redrawMeme(image, topLine, bottomLine) {
     51       //
     52       var canvas = document.querySelector('canvas');
     53       var ctx = canvas.getContext("2d");
     54       if (image != null)
     55         ctx.drawImage(image, 0, 0, canvas.width, canvas.height);
     56       
     57       //
     58       ctx.font = '30pt Impact';
     59       ctx.textAlign = 'center';
     60       ctx.strokeStyle = 'black';
     61       ctx.lineWidth = 3;
     62       ctx.fillStyle = 'white';
     63       
     64       if (topLine != null) {
     65         ctx.fillText(topLine, canvas.width / 2, 40);
     66         ctx.strokeText(topLine, canvas.width / 2, 40);
     67       }
     68       
     69       if (bottomLine != null) {
     70         ctx.fillText(bottomLine, canvas.width / 2, canvas.height - 20);
     71         ctx.strokeText(bottomLine, canvas.width / 2, canvas.height - 20);
     72       }
     73     }
     74     
     75     function saveFile() {
     76       window.open(document.querySelector('canvas').toDataURL());
     77     }
     78     
     79     function handleFileSelect(evt) {
     80       var canvasWidth = 500;
     81       var canvasHeight = 500;
     82       var file = evt.target.files[0];
     83       
     84       
     85       
     86       var reader = new FileReader();
     87       reader.onload = function(fileObject) {
     88         var data = fileObject.target.result;
     89         
     90   
     91         var image = new Image();
     92         image.onload = function() {
     93           
     94           window.imageSrc = this;
     95           redrawMeme(window.imageSrc, null, null);
     96         }
     97         
     98        
     99         image.src = data;
    100         console.log(fileObject.target.result);
    101       };
    102       reader.readAsDataURL(file)
    103     }
    104     
    105     window.topLineText = "";
    106     window.bottomLineText = "";
    107     var input1 = document.getElementById('topLineText');
    108     var input2 = document.getElementById('bottomLineText');
    109     input1.oninput = textChangeListener;
    110     input2.oninput = textChangeListener;
    111     document.getElementById('file').addEventListener('change', handleFileSelect, false);
    112     document.querySelector('button').addEventListener('click', saveFile, false);
    113   </script>
    114 
    115 </body>
    116 </html>
  • 相关阅读:
    每周总结
    5月2日学习日志
    5月1日学习日志
    4月30日学习日志
    4月29日学习日志
    4月28日学习日志
    4月27日学习日志
    每周总结
    vue滚动插件BetterScroll
    vue 获取页面高度
  • 原文地址:https://www.cnblogs.com/cxh1995/p/7403228.html
Copyright © 2011-2022 走看看