web前端如何实现水印
发表于:2024-10-24 作者:千家信息网编辑
千家信息网最后更新 2024年10月24日,这篇文章主要介绍"web前端如何实现水印",在日常操作中,相信很多人在web前端如何实现水印问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"web前端如何实现水印"的疑惑
千家信息网最后更新 2024年10月24日web前端如何实现水印
这篇文章主要介绍"web前端如何实现水印",在日常操作中,相信很多人在web前端如何实现水印问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"web前端如何实现水印"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
前言
前端实现的水印基本都是不安全的,可被破解的~.~
水印
水印(watermark)是一种容易识别、被夹于纸内,能够透过光线穿过从而显现出各种不同阴影的技术。
实现
先创建一个 wrap 块,并给其设置一些样式:
1. DIV绝对定位
通过图层叠加的方式将水印追加到 wrap 上,我们先看一下最终效果
动态获取到 wrap 的长宽并计算其能放几个水印块,并相应的设置每一个水印块的偏移值 left,top即可:
const wrap = document.querySelector('.wrap1');const { clientWidth, clientHeight } = wrap;const waterHeight = 100;const waterWidth = 180;// 能放下几行几列const [columns, rows] = [Math.ceil(clientWidth / waterWidth), Math.ceil(clientHeight / waterHeight)]for (let i = 0; i < columns; i++) { for (let j = 0; j <= rows; j++) { // 生成水印块 const watcerMarkElement = createWaterMarkElement(); // 动态设置偏移值 addAttributes(watcerMarkElement, { width: `${waterWidth}px` , height: `${waterHeight}px` , left: `${waterWidth + (i - 1) * waterWidth + 10}px` , top: `${waterHeight + (j - 1) * waterHeight + 10}px` , }); wrap.appendChild(watcerMarkElement) }}
2. canvas+背景图
我们知道,可以给 div 设置样式 background,我们可以很轻松的实现背景图片,那么水印也可以通过这种方式来实现,其中背景图片通过 canvas 画出来,并且通过 toDataURL() 将图片转为 dataURL(base64),最后追加到 background-image 样式中。
const wrap = document. querySelector('. wrap2'); wrap.style.backgroundImage = `url(${drawWaterMark()})` ;
drawWaterMark 方法实现如下 :
const drawWaterMark = (text = '小豪看世界') => { const sin = Math.sin(Math.PI / 4.5); const cos = Math.cos(Math.PI / 4.5); const canvas = document.createElement('canvas') canvas.width = 200; canvas.height = 100; const ctx = canvas.getContext('2d'); ctx.transform(cos, -sin, sin, cos, 0, 0); ctx.font = '16px'; ctx.fillStyle = 'rgba(0,0,0,.4)'; ctx.fillText(text, 80, 140); ctx.fillText(text, -30, 100); return canvas.toDataURL('image/png')};
我们可以看到 wrap 插入了一个 base64的图片,强迫症的童鞋可以处理一下,将它转为 style 标签插入到body中;
改为 style 标签插入:
const style = document. createElement('style'); style.type = 'text/css'; style[xss_clean] = ` .wrap2 { background-image: url(${drawWaterMark()}); }`; document.body.appendChild(style);
到此,关于"web前端如何实现水印"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
水印
前端
图片
学习
样式
背景
动态
方式
方法
更多
标签
背景图片
偏移
帮助
不同
实用
安全
接下来
光线
前言
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
工业能源管理系统软件开发价格
我的世界搜索不到别人的服务器
长春网络安全ppt
我的世界服务器防刷怪蛋
上传服务器列表空间
青海超市电商软件开发价格
物联网用什么服务器
qq stmp 邮箱服务器
软件开发年总结目标展望
计算机软件开发属于什么工种
网络安全监察徽章
医院网络安全自查报告范文
小额贷款app软件开发公司
邮件中继服务器安全
虚拟化服务器怎么安装
格式工厂怎么转换数据库
网络安全法 腾讯视频
怎么进到腾讯的服务器
fedora服务器
电商直播软件开发哪家好
东丽区电子网络技术创造辉煌
服务器与
海光服务器进boot
pg数据库cache字段
网络安全监察徽章
江苏通讯软件开发价格有哪些
软件开发在哪里开发更安全
网络技术长远目标
sql数据库全库搜索
简述网络安全有哪些基本特征