码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • js实现图片加水印


    用到了一个叫watermark的库,但是这个库的官方例子当中只有一个node的版本,我想仅仅实现一个单个index.html上就能运行的版本,于是将这个node源码拉下来,重新编译,改写了一下,弄了一个在网页上可立即运行的版本

    先看看效果:

     在线demo地址:js实现图片添加水印 (mubanmao.top)

    主要代码:index.html

    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="utf-8" />
    5. <title>起步</title>
    6. <script src="watermark.umd.js"></script>
    7. <style>
    8. #table {
    9. font-size: 20px;
    10. margin-top: 20px;
    11. }
    12. .wrap img{
    13. width: 45%;
    14. margin-right: 20px;
    15. }
    16. </style>
    17. </head>
    18. <body>
    19. <button id="create">添加水印</button>
    20. <div class="wrap">
    21. <img src="static/demo.jpg" id="img" alt="" >
    22. </div>
    23. <script>
    24. document.getElementById('create').onclick = function(){
    25. const ele = document.getElementById('img')
    26. const can = new watermark(ele.getAttribute("src"), {
    27. fontSize: 26,
    28. fillStyle: '#fff',
    29. globalAlpha: 0.5,
    30. clip: {
    31. shape: 'rect',
    32. // padding: '10,50'
    33. }
    34. })
    35. can.addText('文字水印', {repeat: true, lineSpacing: 146, markSpacing: '50%' })
    36. can.addText('测试水印居中', {repeat: false, fontSize: 36, position: {right: '50%', bottom: '50%'}, translate: '50%,50%'})
    37. can.addImage("static/mark.png", {repeat: false, markHeight: 26, lineSpacing: 146, start: 36})
    38. can.draw(function() {
    39. console.log('canvas.draw')
    40. ele.src = can.getBase64()
    41. })
    42. }
    43. </script>
    44. </body>
    45. </html>

    参数

    参数说明类型可选值默认值
    url要添加水印的图片地址String——
    options全局配置参数,详见optionsObject——

    方法

    名称说明参数
    addText添加文字水印text, options(当前水印配置参数)
    addImage添加图片水印url, options(当前水印配置参数)
    draw绘制图片,在addText/addImage之后调用callback:Function
    getBase64获取图片base64地址,需在draw方法的回调函数内调用——
    getBlob获取Blob对象,需在draw方法的回调函数内调用——
    getFile获取File对象,需在draw方法的回调函数内调用——

    options

    参数说明类型可选值默认值
    fontSize文字水印字体大小Number—26
    fillStyle文字水印字体颜色String—#ffffff
    globalAlpha水印透明度Number0-1之间小数0.2
    position水印位置Object—{left: 10, top: 10}
    crossOrigin是否开启跨域(需后端支持)Boolean—false
    translate水印根据给定的参数,从当前元素位置移动String/Array—0
    repeat水印是否重复Boolean—false
    rotate水印旋转角度,repeat为true时有效Number—-45
    start水印起始位置,repeat为true时有效Number—0
    markSpacing两个相邻水印间隔,repeat为true时有效Number/String—50%
    lineSpacing两行相邻水印间隔,repeat为true时有效Number/String—60

  • 相关阅读:
    快消品企业数字化转型解决方案
    杰理的蓝牙芯片的key是什么?以及该如何添加key?杰理key文件原理
    Mysql表创建,约束,主键,存储引擎的使用
    代替虚拟化云安全工程师的解决方案
    vue3+ele-plus+sortableJs对el-table使用sortableJs插件对表格拖拽时限定某列或某行不允许拖拽
    矿产行业供应链协同系统解决方案:构建数智化平台,保障矿产资源安全供应
    下一个倒下的是不是Genesis
    leetcode 二分查找·系统掌握 寻找旋转排序数组中的最小值II
    c#采用toml做配置文件的坑过
    cnn卷积神经网络反向传播,卷积神经网络维度变化
  • 原文地址:https://blog.csdn.net/kongzhonghu/article/details/126764612
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号