[HTML]旭哥带你用Canvas做证书

作者: 程序猿_老李 | 来源:发表于2016-11-28 14:11 被阅读220次

    此片博客主要带大家学会什么呢, 想必大家以前一定见过类似这样的整蛊图片了把?

    Paste_Image.png

    其实实现它的方式有很多种. 例如PS等等. 但是呢, 作为一个程序员, 我们可以用代码更灵活的实现它. 那么我们就来学习一下canvas的使用吧!

    canvas: 是HTML5新出的一个标签.主要提供2d绘制功能!

    第一步:

    准备一个你要用的整蛊的图片!类似于下面这样子. 可能你要会点ps, 把要添加上去的字给抹掉!


    5.jpg

    第二步:

    找一个你认为用的顺手的开发工具, 打开它并且准备好图片和建一个HTML文件.

    第三步:

    创建一个canvas标签, 并且设置相应属性
    <pre>

    <canvas id="myCanVas" width="800" height="400">您的浏览器不支持canvas标签</canvas>

    </pre>
    再来2个控件, 一个输入名字, 一个输入日期的
    <pre>

    <br />
    <input type="text" placeholder="请输入姓名" id="text"><br />
    请选择日期:

    <input type="date" id="day">
    <br />
    <input type="button" value="产生图片" id="submit">
    </pre>

    第四步:

    上面HTML代码差不多了, 该来写我们JS代码了, 先把图片利用canvas加载出来吧, 代码如下:
    <pre>
    <script>
    // 1. 获取canvas标签元素
    var can = document.getElementById("myCanVas");
    // 2. 获取画笔(也就是获取绘图环境)
    var myCan = can.getContext("2d");
    // 3. 加载图片
    var img = new Image();
    img.src = "5.jpg";
    img.onload = function(){
    myCan.drawImage(img, 0, 0);
    }

    </script>
    </pre>

    最后界面显示效果如下:

    Paste_Image.png

    好的, 下面该来干点什么事情了呢? 应该把输入的名字和日期 弄到图片上了把? 很简单. 看如下代码(PS:当然写在跟上面同一个script标签内哈)

    <pre>
    // 4. 获取用户输入的内容的dom元素和按钮元素
    var txt = document.getElementById("text");
    var da = document.getElementById("day");
    var but = document.getElementById("submit");
    but.onclick = function() {
    // 开始绘制路径
    myCan.beginPath();
    // 5. 在图片上指定位置绘制文字
    myCan.fillText(txt.value, 176, 120);
    myCan.fillText(da.value, 176, 210);
    // 结束绘制
    myCan.closePath();
    }
    </pre>

    到这里就ok了, 最后效果看下图:

    1.gif
    最后注意: 这里有个问题, 就是当你不断的点击产生图片的按钮的时候, 你会发现, 文字一直在往图片上绘制. 大家可以锻炼自己解决问题的能力, 这里提供一个思路:

    当第二次点击产生图片按钮时, 利用myCan对象调用clearRect() 方法, 清除canvas标签区域, 然后重新绘制.

    相关文章

      网友评论

        本文标题:[HTML]旭哥带你用Canvas做证书

        本文链接:https://www.haomeiwen.com/subject/wainpttx.html