dolphin-watermark

A tool script about watermark

Usage no npm install needed!

<script type="module">
  import dolphinWatermark from 'https://cdn.skypack.dev/dolphin-watermark';
</script>

README

海豚水印接入文档

核心代码

图片合成模块watermark.js

// 获取字符串长度
const getTxtwidth = (str) => {
  // 创建一个画布
  const canStr = document.createElement('canvas')
  // 设置画布的长宽
  canStr.width = 500
  canStr.height = 300
  const canStrs = canStr.getContext('2d')
  canStrs.font = 'lighter 15px PingFangSC'
  return canStrs.measureText(str).width
}
// 合成背景图
const setWatermark = (str, roatev, xPadding, yPadding) => {
    // 参数说明 str为水印字符串,roatev为旋转角度,xPadding为横向间距,yPadding为纵向
  const txtWidth = getTxtwidth(str)
  const can = document.createElement('canvas')
  // 设置画布的长宽
  can.width = txtWidth * Math.cos(roatev * Math.PI / 180) + xPadding
  can.height = txtWidth * Math.sin(roatev * Math.PI / 180) + yPadding
  const cans = can.getContext('2d')
  // 旋转角度
  cans.rotate(-roatev * Math.PI / 180)
  cans.font = 'lighter 15px PingFangSC'
  // 设置填充绘画的颜色、渐变或者模式
  cans.fillStyle = 'rgba(220, 223, 230, 0.5)'
  // 设置文本内容的当前对齐方式
  cans.textAlign = 'left'
  // 设置在绘制文本时使用的当前文本基线
  cans.textBaseline = 'Middle'
  // 在画布上绘制填色的文本(输出的文本,开始绘制文本的X坐标位置,开始绘制文本的Y坐标位置)
  cans.fillText(str, 0, can.height)
  return 'url(' + can.toDataURL('image/png') + ') left top repeat'
}
export default setWatermark

使用方法:

(1)安装模块

npm install dolphin-watermark --save

(2)在登录入口引入setWatermark模块并调用

import setWatermark from 'dolphin-watermark'

例如:此处在登录成功之后调用合成模块并将图片存入浏览器缓存中

和UI沟通如下默认参数,后续有需要可以根据需求调整

{
  roatev: 15,
  xPadding: 100,
  yPadding: 100
}

image.png

(3)在需要水印的组件外层设置动态背景属性并修改内容背景色为透明

例如:在vue中使用实现如下效果image.png

data(){
    return {
        waterMark: {
        background: localStorage.getItem('watermark')
      } 
  }
}
<el-table :style="waterMark"></el-table>
<style>
.el-table tr {
  background: transparent;
}
</style>
// 部分组件可以修改组件库全局样式覆盖。例如elment-ui table组件可以直接修改覆盖样式文件统一修改