【HTML】使用canvas添加水印

  • 效果

在这里插入图片描述

  • 代码
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>添加水印</title>
    <style>
      html,
      body {
        margin: 0;
        background: #f4f5f7;
      }
      .content {
        margin: 10px;
        padding: 10px;
        background: #fff;
        border-radius: 10px;
        box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05), 0 2px 6px 0 rgba(0, 0, 0, 0.045);
      }
      .line {
        display: flex;
      }
      .paragraph {
        text-indent: 2rem;
        margin-bottom: 10px;
      }
    </style>
  </head>
  <body>
    <div id="content" class="content">
      <div class="line">
        <div>
          <div class="paragraph">台湾海峡,是中国大陆与台湾岛之间连通南海、东海的海峡。西起福建省沿海,东至台湾岛西岸;南北界线有多种说法,一般标准是:南起台湾南端猫鼻头~广东南澳岛之间的连线,北至台湾北端富贵角~福建连江北茭的连线。</div>
          <div class="paragraph">台湾海峡NE向纵向延伸,长约400公里,面积约9万平方公里。南宽北窄,南口宽约400公里,北口宽约200公里,北部最窄处为130公里。</div>
          <div class="paragraph">台湾海峡,是贯通中国南北海运的要道,处于中国东海大陆架上,地形起伏不平,平均水深约60米。海峡位于亚热带、北热带季风气候区。受黑潮影响,海峡水温较高,盐度和透明度较大、风浪较大。</div>
          <div class="paragraph">台湾海峡资源丰富,是中国重要渔场之一。鲯、鲔和鲨为这里三大渔产。海峡底部富集油气资源,还有钛铁、磁铁、金红石、独居石和锆石等矿,品位高,储量大。</div>
          <div class="paragraph">
            海峡两岸,自古以来就是中国的神圣领土,周朝为七闽地,春秋以后为闽越地。秦置闽中郡,三国时吴国设建安郡,并派兵到台湾,北宋置福建路,并开始对台湾编户管辖,元设立福州、泉州2个行省。清代,福建区划继承明制,增设台湾府,属福建统辖。1885年,台湾府单独设省。辛亥革命后,均置福建省。
            [3]清光绪年间中日甲午战争中战败,据中日《马关条约》,清政府被迫割让台湾及澎湖于日本,直到1945年台湾光复,台湾及澎湖列岛重归中国版图。
          </div>
          <div class="paragraph">由于台湾海峡两岸都是中国领土,且海峡宽度在200海里以下,依据《联合国海洋法公约》,台湾海峡水域除了两岸12海里以内的“领海”外,大部分为中国的“专属经济区”。</div>
        </div>
        <div>
          <img src="https://bkimg.cdn.bcebos.com/pic/7a899e510fb30f2442a7ca0673c1c643ad4bd113a520?x-bce-process=image/resize,m_lfit,w_536,limit_1/quality,Q_70" alt="" srcset="" />
        </div>
      </div>
      <div class="paragraph">
        <div class="paragraph">
          台湾海峡,为位于闽、台两省间的海域,是连接东海与南海的水道。其南、北界限的划分不尽一致。南界常有二种划分,自台湾岛猫鼻头(有鹅銮鼻之说 [7])至东山岛或南澳岛(还有认为福建与广东两省海岸交界处 [8],或福建的诏安头 [7])。北界常有三种划法,自台湾岛北端富贵角至福建连江北茭(黄歧半岛北茭咀
          [7]),或至闽江口或至平潭岛(海坛岛)北端痒角。
        </div>
        <div class="paragraph">
          《福建省志·海洋志》载:根据台湾海峡具有鲜明的综合特性,其南、北界限除根据闽、台两岸地形特点外,还基于海底地形、地质、地貌、地震以及闽江等入海泥砂等综合特点进行划界。南界:台湾南端猫鼻头(屏东县南端)至广东南澳岛(属汕头市南澳县)。北界:台湾北端富贵角(新北市北端)至福建连江北茭(黄歧半岛北茭咀、连江县东北端苔菉镇北茭村)。
        </div>
      </div>
    </div>
    <script>
      window.onload = () => {
        const addWaterMarker = (dom, str, width = 200, height = 200) => {
          // 绘制水印
          const can = document.createElement("canvas");
          can.width = width;
          can.height = height;
          const canv = can.getContext("2d");
          // 设置中心点,将坐标系移动到中心点
          canv.translate(width / 2, height / 2);
          // 旋转45°
          canv.rotate(-Math.PI / 4);
          // 绘制文字
          canv.fillStyle = "rgba(253, 121, 168, 0.3)";
          canv.textAlign = "center";
          canv.textBaseline = "middle";
          canv.font = "bold 20px Arial";
          canv.fillText(str, 0, 0);
          dom.style.backgroundImage = `url(${can.toDataURL("image/png")})`;
        };
        const dom = document.getElementById("content");
        addWaterMarker(dom, "添加水印", 300, 400);
      };
    </script>
  </body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/275299.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebRTC原理与web端实战开发

什么是WebRTC webRtc(web real-time Communication) &#xff0c;旨在建立一个浏览器间实时通信的平台 谷歌开源跨平台&#xff08;android&#xff0c;IOS&#xff0c;windows&#xff0c;Linux&#xff09;实时传输&#xff08;提供强大的音视频引擎&#xff09; RTC涉及的…

SpringCloud(H版alibaba)框架开发教程---附源码 一

源码地址&#xff1a;https://gitee.com/jackXUYY/springboot-example 创建订单服务&#xff0c;支付服务&#xff0c;公共api服务&#xff08;共用的实体&#xff09;&#xff0c;eureka服务 1.cloud-consumer-order80 2.cloud-provider-payment8001 3.cloud-api-commons 4.…

Vue框架引入Axios

首先已经创建好了 Vue 框架&#xff0c;安装好了 node.js。 没有完成的可按照此博客搭建&#xff1a;搭建Vue项目 之后打开终端&#xff0c;使用命令。 1、命令安装 axios 和 vue-axios npm install axios --save npm install vue-axios --save2、package.json 查看版本 在 p…

Flink1.17实战教程(第五篇:状态管理)

系列文章目录 Flink1.17实战教程&#xff08;第一篇&#xff1a;概念、部署、架构&#xff09; Flink1.17实战教程&#xff08;第二篇&#xff1a;DataStream API&#xff09; Flink1.17实战教程&#xff08;第三篇&#xff1a;时间和窗口&#xff09; Flink1.17实战教程&…

新建虚拟环境并与Jupyter内核连接

第一步:在cmd里新建虚拟环境,shap38是新建的虚拟环境的名字 ,python=3.x conda create -n shap38 python=3.8第二步,安装ipykernel,打开anconda powershell prompt: 虚拟环境的文件夹位置,我的如图所示: 进入文件夹并复制地址: 输入复制的文件夹地址更改文件夹:…

跨境电商获客脚本必备功能有哪些?

随着全球化的加速和电子商务的兴起&#xff0c;跨境电商已经成为了企业拓展市场、提高收益的重要途径。 而在跨境电商运营中&#xff0c;获客脚本的作用不可忽视&#xff0c;本文将为您揭示跨境电商获客脚本必备的五大功能&#xff0c;帮助您在激烈的市场竞争中抢占先机。 一…

基于零和收益的DEA模型研究python实现

传统的DEA模型往往假设相关的是相互独立的,此时DEA模型只能计算出相对效率,无法进行效率的调整。如在碳排放分配问题上,碳排放总量保持不变,利用DEA模型只能计算出每个省份分配的相对效率,这在讨论固定资源下的碳排放配额分配问题时具有明显的局限性。在这种情况下,利用Z…

网络拓扑图怎么画最好?

画拓扑图的方式有很多&#xff0c;在线软件&#xff0c;Visio&#xff0c;PPT&#xff0c;都是方法。 问题是你要怎么从0到1&#xff0c;怎么样用拓扑图完美地把你的网络逻辑结构、思路呈现出来。 没经验的朋友真的不知道从哪里上手。 今天就给你来一篇绘制拓扑图详解&#…

Mybatis-plus实际开发步骤

一、Mybatis-plus基本配置 1、pom.xml导入Mybatis-plus依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.2</version> </dependency>2、application.yml文…

Local Binary Convolutional Neural Networks (LBCNN)

论文&#xff1a;https://arxiv.org/abs/1608.06049 代码&#xff1a;GitHub - juefeix/lbcnn.torch: Torch implementation of CVPR17 - Local Binary Convolutional Neural Networks http://xujuefei.com/lbcnn.html 摘要&#xff1a; 我们提出了局部二值卷积(LBC)&#x…

【Redis】八、哨兵模式

文章目录 一、概述这里的哨兵有两个作用多个哨兵 二、哨兵测试1、配置哨兵配置文件 sentinel.conf2、启动哨兵3、断开Master节点 三、哨兵模式优点&#xff1a;缺点&#xff1a; 哨兵模式的全部配置 参考&#xff1a;狂神说Java bilibili哨兵模式 一、概述 自动选取老大的模式…

WEB渗透—PHP反序列化(九)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…

C语言停车场模型详解

C语言停车场模型详解 1. 引言2. 代码概述3. 代码详解3.1 定义常量和数据结构3.2 初始化车库3.3 查找车辆所在车库3.4 查找车辆所在的车位3.5 打印车库状态3.6 打印等候车辆3.7 车辆入库3.8 车辆出库3.9 菜单功能3.10 主函数 5.效果展示5.完整代码6. 总结 1. 引言 本文将介绍一…

linux 网络工具(二)

linux 网络工具 1. ip命令簇4.1 address4.2 link4.3 route4.4 rule 2. 其他常用命令2.1 ifup/ifdown2.2 配置主机名2.3 设置DNS服务器指向2.4 配置域名解析2.5 ss2.6 路由相关配置文件2.7 查看机器可用端口2.8 traceroute2.9 dhclient 1. ip命令簇 Linux的ip命令和ifconfig类似…

vue3+elementPlus:el-drawer新增修改弹窗复用

在el-drawer的属性里设置:title属性&#xff0c;和重置函数 //html<!-- 弹窗 --><el-drawerv-model"drawer":title"title":size"505":direction"direction":before-close"handleClose"><el-formlabel-posit…

yolov8 细胞分割数据集准备及训练

1、数据 下载:https://universe.roboflow.com/motherson-hm/5-part-diff 500来张,5个类别(嗜碱性细胞、嗜酸细胞、淋巴细胞、单核细胞、中性粒细胞) yolo 分割数据标注格式: 与检测类似,就是坐标分割有多个 2、训练 训练yaml: seg_data.yaml (与检测格式一样) …

Guava自加载缓存LoadingCache使用指南

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;今天我们来聊聊缓存。在Java世界里&#xff0c;高效的缓存机制对于提升应用性能、降低数据库负担至关重要。想象一下&#xff0c;如果每次数据请求都要跑到数据库里取&#xff0c;那服务器岂不是要累趴了&#x…

SpringBoot发布项目到docker

Dockerfile FROM openjdk:11 # 作者 MAINTAINER chenxiaodong<2774398338qq.com># 安装 vim # RUN yum -y install vim# 环境变量 # 进入容器后的默认工作目录 ENV WORKPATH /usr/local/webapp ENV EXECFILE Docker2Application-0.0.1-SNAPSHOT.jarRUN mkdir -p $WORKPA…

论文分享 | 利用单模态自监督学习实现多模态AVSR

以下文章来源于智能语音新青年 &#xff0c;作者ttslr 论文地址&#xff1a; https://aclanthology.org/2022.acl-long.308.pdf 代码仓库&#xff1a; https://github.com/LUMIA-Group/Leveraging-Self-Supervised-Learning-for-AVSR 训练一个基于Transformer的模型需要大量的…

从0开始学前端day1

script setup 在script里写一个setup的作用 自动注册子组件属性和方法无需返回&#xff0c;执行完后自动更新支持props和context Vue 3中的props和context props是一种用于父子组件通信的机制。父组件可以通过props向子组件传递数据&#xff0c;子组件则可以通过props接收来…