• 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文字水印字体大小Number26
    fillStyle文字水印字体颜色String#ffffff
    globalAlpha水印透明度Number0-1之间小数0.2
    position水印位置Object{left: 10, top: 10}
    crossOrigin是否开启跨域(需后端支持)Booleanfalse
    translate水印根据给定的参数,从当前元素位置移动String/Array0
    repeat水印是否重复Booleanfalse
    rotate水印旋转角度,repeat为true时有效Number-45
    start水印起始位置,repeat为true时有效Number0
    markSpacing两个相邻水印间隔,repeat为true时有效Number/String50%
    lineSpacing两行相邻水印间隔,repeat为true时有效Number/String60

  • 相关阅读:
    C++ 类和对象 (6)this指针
    为什么你的项目总延期?多半是没做好5件事
    python-List&tuple&dict
    人工智能对我们的生活影响有多大
    刷题心得 【2731. 移动机器人】
    Java API速记手册(持续更新ing...)
    vscode_pytest_配置debug环境:增加和打印环境变量
    Java 8 新特性解读及应用实践
    距平图(标签-AR)
    大数据Hadoop入门教程 | (一)概论
  • 原文地址:https://blog.csdn.net/kongzhonghu/article/details/126764612