当前位置: 首页 > news >正文

整页添加水印的方法

// 页面添加水印效果

const setWatermark = (str: string) => {

    const id = '1.23452384164.123412416';

    if (document.getElementById(id) !== null) document.body.removeChild(<HTMLElement>document.getElementById(id));

    const can = document.createElement('canvas');

    can.width = 200;

    can.height = 130;

    const cans = <CanvasRenderingContext2D>can.getContext('2d');

    cans.rotate((-20 * Math.PI) / 180);

    cans.font = '12px Vedana';

    cans.fillStyle = 'rgba(200, 200, 200, 0.30)';

    cans.textBaseline = 'middle';

    cans.fillText(str, can.width / 10, can.height / 2);

    const div = document.createElement('div');

    div.id = id;

    div.style.pointerEvents = 'none';

    div.style.top = '0px';

    div.style.left = '0px';

    div.style.position = 'fixed';

    div.style.zIndex = '10000000';

    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;

};

/**

 * 页面添加水印效果

 * @method set 设置水印

 * @method del 删除水印

 */

const watermark = {

    // 设置水印

    set: (str: string) => {

        let id = setWatermark(str);

        if (document.getElementById(id) === null) id = setWatermark(str);

    },

    // 删除水印

    del: () => {

        let id = '1.23452384164.123412416';

        if (document.getElementById(id) !== null) document.body.removeChild(<HTMLElement>document.getElementById(id));

    },

};

// 导出方法

export default watermark;


http://www.mrgr.cn/news/70134.html

相关文章:

  • 分布式光伏智慧平台建设现场 系统集成商如何盈利
  • C++20 概念与约束(1)—— SFINAE
  • 如何在OCI上配置并使用OCI GenAI服务的步骤
  • Flink_DataStreamAPI_输出算子Sink
  • Scala中的case class
  • pySpark乱码
  • idea插件开发-国际化调试
  • 985研一学习日记 - 2024.11.10
  • AI写作(七)的核心技术探秘:情感分析与观点挖掘
  • 以字符串的形式输出一个当前操作系统的路径分隔符os.altsep
  • VirtIO实现原理(1)
  • 精深之道:在专业领域迅速铸就影响力
  • C语言 | Leetcode C语言题解之第557题反转字符串中的单词III
  • 基于STM32通过TM1637驱动4位数码管详细解析(可直接移植使用)
  • js中const讲解
  • SQLite 全文检索:快速高效的文本查询方案
  • PGMP-串串040506 效益管理相关方争取治理
  • ESP32-S3模组上跑通esp32-camera(11)
  • 腾讯首个3D生成大模型Hunyuan3D-1.0分享
  • 算法求解 -- (炼码 3853 题)检查是否有路径经过相同数量的0和1
  • WIndows搭建NGINX环境
  • Python学习从0到1 day26 第三阶段 Spark ⑤ 搜索引擎日志分析
  • [C++] 函数详解
  • 嵌入式面试八股文(六)·ROM和RAM的区别、GPIO的八种工作模式、串行通讯和并行通讯的区别、同步串行和异步串行的区别
  • 声学中频率概念
  • 云计算在智能交通系统中的应用