图片实现水印

当我们浏览网页查看图片的时候,经常看到图片上会有水印出现。有时我们需要在图片上加水印用来标示归属或者其他信息,怎么实现呢,这里就要用到我们的 canvas-画布。

实现思路 :图片加载成功后画到canvas中,随后在canvas中绘制水印,完成后通过canvas.toDataUrl()方法获得base64并替换原来的图片路径。

话不多说,上代码:

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
    </head>
    <body>
    <div id="box" onclick="alert(o)">
        <img />
    </div>
    </body>
    <script>
       (function() {
         function ImgX({
           url = '',
           textAlign = 'center',
           textBaseline = 'middle',
           fillStyle = 'rgba(180, 180, 180, 0.7)',
           content = '水印',
           ele = null,
           textX = 90,
           textY = 30
         } = {}) {
           const img = new Image();
           img.src = url;
           img.crossOrigin = 'anonymous';
           img.onload = function() {
                 const canvas = document.createElement('canvas');
                 canvas.width = img.width;
                 canvas.height = img.height;
                 const obj = canvas.getContext('2d');

                 obj.drawImage(img, 0, 0);
                 obj.textAlign = textAlign;
                 obj.textBaseline = textBaseline;
                 obj.fillStyle = fillStyle;
                 obj.fillText(content, img.width - textX, img.height - textY);

                 const base64Url = canvas.toDataURL();
                 ele && ele(base64Url);
           }
         }

        if (typeof module != 'undefined' && module.exports) {  
           module.exports = ImgX;
         } else if (typeof define == 'function' && define.amd) { 
           define(function () {
                 return ImgX;
           });
         } else {
           window.ImgX = ImgX;
         }
             
       })();

       // 调用
       ImgX({
           url: './1.jpg',
           content: '水印',
           ele: (base64Url) => {
                 document.querySelector('img').src = base64Url
           },
       });

    </script>
</html>

以上。

欢迎交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值