用到了一个叫watermark的库,但是这个库的官方例子当中只有一个node的版本,我想仅仅实现一个单个index.html上就能运行的版本,于是将这个node源码拉下来,重新编译,改写了一下,弄了一个在网页上可立即运行的版本

先看看效果:

 在线demo地址:js实现图片添加水印 (mubanmao.top)

主要代码:index.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>起步</title>
	<script src="watermark.umd.js"></script>
    <style>
        #table {
            font-size: 20px;
            margin-top: 20px;
        }
        .wrap img{
          width: 45%;
          margin-right: 20px;
        }
    </style>
  </head>
  <body>
    <button id="create">添加水印</button>
    <div class="wrap">
      <img src="static/demo.jpg" id="img" alt="" >
    </div>
	<script>
document.getElementById('create').onclick = function(){
    const ele = document.getElementById('img')
    const can = new watermark(ele.getAttribute("src"), {
      fontSize: 26,
      fillStyle: '#fff',
      globalAlpha: 0.5,
      clip: {
        shape: 'rect',
        // padding: '10,50'
      }
    })
    can.addText('文字水印', {repeat: true, lineSpacing: 146, markSpacing: '50%' })
    can.addText('测试水印居中', {repeat: false, fontSize: 36, position: {right: '50%', bottom:  '50%'}, translate: '50%,50%'})
    can.addImage("static/mark.png", {repeat: false, markHeight: 26, lineSpacing: 146, start: 36})
    can.draw(function() {
      console.log('canvas.draw')
      ele.src = can.getBase64()
    })
}
	</script>
  </body>
</html>

参数

参数说明类型可选值默认值
url要添加水印的图片地址String
options全局配置参数,详见optionsObject

方法

名称说明参数
addText添加文字水印text, options(当前水印配置参数)
addImage添加图片水印url, options(当前水印配置参数)
draw绘制图片,在addText/addImage之后调用callback:Function
getBase64获取图片base64地址,需在draw方法的回调函数内调用——
getBlob获取Blob对象,需在draw方法的回调函数内调用——
getFile获取File对象,需在draw方法的回调函数内调用——

options

参数说明类型可选值默认值
fontSize文字水印字体大小Number26
fillStyle文字水印字体颜色String#ffffff
globalAlpha水印透明度Number0-1之间小数0.2
position水印位置Object{left: 10, top: 10}
crossOrigin是否开启跨域(需后端支持)Booleanfalse
translate水印根据给定的参数,从当前元素位置移动String/Array0
repeat水印是否重复Booleanfalse
rotate水印旋转角度,repeat为true时有效Number-45
start水印起始位置,repeat为true时有效Number0
markSpacing两个相邻水印间隔,repeat为true时有效Number/String50%
lineSpacing两行相邻水印间隔,repeat为true时有效Number/String60

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐