在src/utils文件夹下新建watermark.ts,写入以下代码块,生成水印文件
export const getWatermark = ( ) => { const setWatermark = ( str: any ) => { const id = '1.23456789.123456789' ; if ( document. getElementById ( id) !== null ) { document. body. removeChild ( document. getElementById ( id) ! ) ; } const can = document. createElement ( 'canvas' ) ; can. width = 160 ; can. height = 120 ; const cans = can. getContext ( '2d' ) ! ; cans. rotate ( ( - 15 * Math. PI ) / 180 ) ; cans. font = '18px Vedana' ; cans. fillStyle = 'rgba(200, 200, 200, 0.40)' ; cans. textAlign = 'left' ; cans. fillText ( str, can. width / 8 , can. height / 2 ) ; const div = document. createElement ( 'div' ) ; div. id = id; div. style. pointerEvents = 'none' ; div. style. top = '30px' ; div. style. left = '0px' ; div. style. position = 'fixed' ; div. style. zIndex = '100000' ; div. style. width = document. documentElement. clientWidth + 'px' ; div. style. height = document. documentElement. clientHeight + 'px' ; div. style. background = 'url(' + can. toDataURL ( 'image/png' ) + ') left top repeat' ; document. body. appendChild ( div) ; return id; } ; const watermark = ( str: string ) => { let id = setWatermark ( str) ; setInterval ( ( ) => { if ( document. getElementById ( id) === null ) { id = setWatermark ( str) ; } } , 500 ) ; window. onresize = ( ) => { setWatermark ( str) ; } ; } ; return { watermark } ;
} ;
引入getWatermark函数,进行使用,示例代码如下:
import { getWatermark } from '@/utils/watermark' ; const { watermark } = getWatermark ( ) ;
const previewChange = ( ) => { viewFlag. value = ! viewFlag. value; if ( viewFlag. value) { watermark ( '水印水印水印' ) ; } else { watermark ( '' ) ; } } ;
document. oncontextmenu = function ( ) { return false ;
} ;
const previewChange = ( ) => { viewFlag. value = ! viewFlag. value; if ( viewFlag. value) { watermark ( '水印水印水印' ) ; document. oncontextmenu = function ( ) { return false ; } ; } else { document. oncontextmenu = function ( ) { return true ; } ; watermark ( '' ) ; } } ;
防止使用F12打开控制台,所以获取图片地址方式为:前端根据数据库存储的图片路径,获取路径后到后端服务器上获取图片再到前端展示。
src = https: / / 192 . xxx. xx. xx: 0000 / api/ showImg? filePath= / home/ uploadfiles/ pit/ 1234567890abcdefghijklmn