vue 设置水印

本文介绍了如何使用双向绑定技术通过表单设置水印内容,并详细讲解了warterMark.js中的水印生成函数,包括设置字体、颜色、旋转等。组件中通过el-select实现方向选择,点击确认按钮动态添加并调整水印。
摘要由CSDN通过智能技术生成

1、根据 用户自己设置的内容,进行水印展示

      使用表单,利用双向绑定,来设置每一项的值

2、创建 warterMark.js 用于放生成水印的操作, 在utils 文件下、

      let addWaterMark = (str,fontSize,color,fontWeight,style) => {
      let id = '1.23452384164.123412415'
      if (document.getElementById(id) !== null) {
          document.body.removeChild(document.getElementById(id))
      }
	   //创建一个画布
	  let can = document.createElement('canvas')
    // 设置canvas画布大小
    can.width = 150
    can.height = 80
    let cans = can.getContext('2d')
    cans.translate(20,20)  //
    // cans.rotate(-20*Math.PI/180);  0  
    cans.rotate(style.angle * Math.PI / 180) // 水印旋转角度  0 水平  -90  垂直
    cans.font = fontSize +'px ' + fontWeight
    cans.globalAlpha = 0.5; // 设置图像透明度为0.2
    cans.fillStyle = color //设置填充绘画的颜色、渐变或者模式
    cans.textAlign = 'center' //设置文本内容的当前对齐方式
    cans.textBaseline = 'Middle' //设置在绘制文本时使用的当前文本基线
    cans.fillText(str,0, 0) // 在画布上绘制填色的文本(输出的文本,开始绘制文本的X坐标位置,开始绘制文本的Y坐标位置)
	  // cans.fillText(str2, can.width / 2, can.height + 22)//根据需求可添加多行水印,在方法中添加str2..
	  let div = document.createElement('div')
	  div.id = id
	  div.style.pointerEvents = 'none'
	  div.style.zIndex = '100000'
	  div.style.width = 200+ 'px'
	  div.style.height = 200 + 'px'
	  div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'

  		document.getElementById('securityINfo-right-show').appendChild(div)  // 添加到你想要展示的div 

  	// document.body.appendChild(div)
		  return id
}
// 添加水印
export function setWaterMark(str,fontSize,color,fontWeight,direction) {
    let id = addWaterMark(str,fontSize,color,fontWeight,direction)
    if (document.getElementById(id) === null) {
      id = addWaterMark(str,fontSize,color,fontWeight,direction)
    }
  }
  // 移除
  export function clearWatermark() {
    let id = '1.23452384164.123412415'
    if (document.getElementById(id) !== null) {
      // document.body.removeChild(document.getElementById(id))
      document.getElementById('securityINfo-right-show').removeChild(document.getElementById(id))   //   要和上面添加的div 一致
    }
  }

3、在组件中使用

 import { setWaterMark,clearWatermark }  from "@/utils/warterMark.js";
 
 点击确认按钮调用:  
      setWaterMark(this.form.content,this.form.fontSize,this.form.color,this.form.fontStyle,this.style) 
      
 选择方向:
     <el-select v-model="form.style" @change=changeStyle>
            <el-option label="水平" value="1">水平</el-option>
            <el-option label="垂直" value="2">垂直</el-option>
     </el-select>
     
     changeStyle(value){
        console.log(value)
       if(value == 1){ // 水平
         this.style={
           angle:0
         }
       } else {  // 垂直
        this.style={
           angle:-90
         }
       }
      }

4、展示效果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值