首页 > 其他分享 >canvas 实现水印功能

canvas 实现水印功能

时间:2023-04-03 13:11:31浏览次数:29  
标签:canvas const ctx style 水印 drawWaterPrint 功能 waterWrapper

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body id="waterWrapper">
    <canvas id="canvas"></canvas>

  <script>
  function drawWaterPrint(){
    const canvas = document.getElementById('canvas');
    canvas.width = 200;
    canvas.height = 200;
    canvas.style.display = 'none';  
    const ctx = canvas.getContext('2d');
    ctx.font ='16px Microsoft JhengHei';
    ctx.fillStyle ='rgba(0,0,0,.3)';
    ctx.rotate(-0.3) ;
    ctx.fillText('大东在路上',canvas.width / 8,canvas.height / 4);
    // ctx.fillText('大东在路上',20,20);

    const img = canvas.toDataURL('image/png' )
    const style =`background-image:url(${img})`
    if(style !== waterWrapper.style){
      waterWrapper.setAttribute( 'style',style);
    }
  }

  drawWaterPrint()

  function callback(){
      drawWaterPrint()
  }
  const observer = new MutationObserver(callback)
  const targetNode = waterWrapper // 监听节点
  const config = {attributes : true} // 监听属性
  observer.observe(targetNode,config)



  </script>
  
</body>
</html>

 

标签:canvas,const,ctx,style,水印,drawWaterPrint,功能,waterWrapper
From: https://www.cnblogs.com/zhuangdd/p/17282775.html

相关文章

  • Django笔记十四之统计总数、最新纪录和空值判断等功能
    本篇笔记将介绍一些Django查询中统计总数、最新纪录和空值判断等功能。countin_bulklatest、earliestfirst、lastexistscontains、icontainsgt、gte、lt、ltestartswith、istartswithisnull1、count返回查询的QuerySet的总数。比如想查询Blog下name='hunte......
  • 巧用rpmbuild的expand宏实现模板功能
    需求:构建生成的二进制包的个数不确定,由某些条件决定。比如,我们想为系统中的所有内核版本构建某个外来模块,如果系统中有2个内核版本,就生成两个2个二进制包,分别对应相应的版本,如果系统中有3个内核版本,就生成3个二进制包。我们的需求是实现动态个数的%package。很多人在讨论spec是......
  • 工具属性与功能剖析
    UFT--企业级自动化测试工具:1、UFT是一种企业级的自动化测试工具,提供了强大易用的录制回放功能;2、基于GUI(图形用户界面(GraphicalUserInterface),简称GUI)的自动化,模拟用户使用行为,调用api接口程序,实现测试自动化:uft/qtp,执行重复的手动测试,例如要测试哪些功能、操作步骤、输入数据......
  • 容器功能 底层注解
    一、组件添加1、@Configuration原来使用配置文件配置bean<beanid="user"class="com.cmq.boot.bean.User"><propertyname="name"value="cencen"/><propertyname="age"value="18"/>......
  • 3.注册功能
    注册功能"""我们之前直接在views.py中书写forms组件代码但是为了解耦合,应当将所有的forms组件代码单独写到一个地方如果项目自始至终只用到一个forms组件,那么可以直接建一个py文件即可myforms.py如果你的项目需要用到多个forms组件,那么可以创建一个文件夹并在该文件夹......
  • Layui open()弹窗中的表单实现Layui自带的验证功能
    在 layer.open中的 success回调方法里增加如下代码:layero.addClass('layui-form');layero.find(".layui-layer-btn0").attr({"lay-filter":"addSubmit","lay-submit":""});  ......
  • C#个人邮件发送功能
    在收件人邮箱开启stmp授权,获取授权码,具体在要登陆对应邮箱在设置具体百度调用微软提供SmtpClient的接口SmtpClient类(System.Net.Mail)|MicrosoftLearn......
  • IntelliJ IDEA 2023.1 版本添加了包中类的列表功能
    想知道在一个包下面有什么类。可以在新版的IntelliJIDEA2023.1中把鼠标移动到包上面。在包上面就可以看到这个包下面的类了。  这个功能还不错呢,能知道这个包下面有什么东西。https://www.ossez.com/t/intellij-idea-2023-1/14371......
  • 《花雕学AI》04:尝鲜功能丰富且容易上手的AI绘画工具——Leonardo AI
    偶然机缘,我接触到了另外一个AI绘画平台:Leonardo.AI  它是一个新的AI图像平台,其输出质量可与目前最火的Midjourney相媲美,当然差距还是有的。其链接是https://leonardo.ai/,界面如下图。我填写了电邮地址,申请试用的资格,后来,就没有下文了,呵呵......然后,使用谷歌账号,居然......
  • 盲盒商城功能讲解,盲盒商城软件开发
    盲盒商城app有哪些,盲盒商城小程序有哪些,盲盒商城软件开发多少钱,盲盒商城软件开发公司哪家好,类似魔点APP开发,类似魔点APP开发多少钱,类似魔点软件OEM开发,盲盒商城软件开发,盲盒商城小程序开发,盲盒商城app开发,盲盒商城平台搭建随着科技的不断发展,越来越多的人开始使用智能手机,......