前端利用canvans生成水印用js动态添加

153 阅读1分钟

其实就是利用canvas来绘画之后用 toDataURL转成一张 图片 达到水印效果 但是这种方式 从控制台是可以修改水印的 并不保险

addWater() {
  let tableContainer11 = document.getElementById('容器Id')
  let can = document.createElement('canvas')
  can.width = 990 // 水印的宽度
  can.height = 800 // 水印的高度

  let cans = can.getContext('2d')
  cans.rotate(-20 * Math.PI / 180) // 水印的旋转角度
  cans.font = '360px Vedana' // 水印文字的大小和字体
  cans.fillStyle = 'rgba(0, 0, 0, 0.03)'
  cans.textAlign = 'left'
  cans.textBaseline = 'Middle'
  cans.fillText('测试', can.width / 800, can.height) // 水印的文字内容 以及宽高

  for (let i = 1; i <= 2; i++) {
//生成的水印个数
    let markBoxAll = document.getElementById('markBox' + i)

    if (markBoxAll !== null) {
      markBoxAll.parentNode.removeChild(markBoxAll)
    }
    let waterMarkDiv = document.createElement("div")

    waterMarkDiv.id = 'markBox' + i
    waterMarkDiv.style.pointerEvents = 'none'
    waterMarkDiv.style.top = '0px'
    waterMarkDiv.style.left = '0px'
    waterMarkDiv.style.position = 'absolute'
    waterMarkDiv.style.zIndex = '999'
    waterMarkDiv.style.width = tableContainer11.clientWidth + 'px'
    waterMarkDiv.style.height = tableContainer11.clientHeight + 'px'
    waterMarkDiv.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'

    document.getElementById('需要添加水印的容器Id').appendChild(waterMarkDiv)
  }
}