千家信息网

web前端如何实现水印

发表于:2025-02-09 作者:千家信息网编辑
千家信息网最后更新 2025年02月09日,这篇文章主要介绍"web前端如何实现水印",在日常操作中,相信很多人在web前端如何实现水印问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"web前端如何实现水印"的疑惑
千家信息网最后更新 2025年02月09日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安全错误 数据库的锁怎样保障安全 网络安全理念需与技术并行 公安机关提出的网络安全三化 云服务器代码 前端存储数据库插件 本体软件开发有限公司 nosql数据库视频教程 阐述数据库的主要安全要求 软件开发人力价格标准 网络数据库安全性论文 数据库运维主要看哪些东西 网吧服务器删除龙管家 数据库软件自诞生至今多少年 数据库应用技术综合应用汽车 网上预约澳门签注显示服务器异常 泰拉瑞亚steam进不去好友服务器 湖北联想服务器维修哪家便宜 网络技术保障岗待遇怎么样 关于网络安全的相关政策 中石化网络安全技术交流大会 odbc占用服务器资源多吗 软件开发与服务个股 周末软件开发课程培训班 数据库技术及应用是什么课 公安机关提出的网络安全三化 前端存储数据库插件 网络安全体形势2017 机关统计数据库 中兴服务器怎么重启管理口 软件开发会不会有数学知识 vpn穿透服务器
0