@tinyfe/watermark
v0.0.12
Published
use canvas generate the watermark
Downloads
7
Maintainers
Readme
@tinyfe/watermark
水印 APIs, 支持自动生成。外部传入水印,并实时监听补全被删除的水印。
Usage
基础用法(so easy)
import WaterMark from '@tinyfe/watermark';
new WaterMark({
container: document.querySelector('.watermark'),
text: '法网恢恢疏而不漏,POI',
});
进阶用法
new WaterMark({
container: document.querySelector('.watermark'),
text: '法网恢恢疏而不漏,POI',
fontType: 'Microsoft YaHei',
color: 'red',
fontSize: 24,
alpha: 0.2,
image: '',
repeat: true,
style: {
width: 1000,
height: 800,
top: '30px',
},
});
new WaterMark({
monitor: false,
container: document.querySelector('.watermark1'),
text: '还在想抄袭,搞屁哦',
fontSize: 24,
color: 'red',
alpha: 0.5,
image: '',
repeat: true,
style: {
width: 1000,
height: 800,
top: '30px',
},
});
new WaterMark({
monitor: false,
image: 'https://avatars.githubusercontent.com/u/20939839?v=4',
container: document.querySelector('.watermark2'),
fontSize: 24,
color: 'red',
alpha: 0.5,
style: {
width: 1000,
height: 800,
top: '30px',
},
});
参数
Options
| Key | 类型 | 默认值 | 描述 |
| ------------------------- | ------------------------- | ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| container
(必选参数) | string
| HTMLElement
| null
| 挂载节点。 注意, 传入值为 string
时, 为了保证唯一性, 默认是以 id
的方式传入 |
| monitor
| boolean
| true
| monitor
是否监控, true
: 不可删除水印; false
: 可删水印 |
| observer
| MutationCallback
| | MutationObserver Callback
|
| observerOptions
| object
| ObserverOptions | MutationObserver Options
|
| encoderOptions
| number
| 0.92
| 在指定图片格式为 image/jpeg
或 image/webp
的情况下可以从 0
到 1
的区间内选择图片的质量。如果超出取值范围, 将会使用默认值 0.92
。其他参数会被忽略。 |
| style
| object
| {}
| 初始化 canvas
样式 |
水印配置
| Key | 类型 | 默认值 | 描述 |
| -------------------- | --------- | ----------------- | ---------------------------------- |
| prefix
| string
| ''
| 水印前缀,只在 text
模式下使用 |
| text
(必选参数) | string
| ''
| 当 image
为空值时使用 text
模式 |
| font
| string
| Microsoft YaHei
| 字体相关样式 |
| fontSize
| number
| 24 | |
| image
| string
| ''
| 水印图片 |
| color
| string
| #848FA7
| 水印颜色 |
| alpha
| number
| 0.2 | 水印透明度 |
| rotate
| number
| 340 | deg,水印旋转角度, |
| scale
| number
| 1 | 缩放 |
| repeat
| boolean
| true | 水印是够在x
轴 y
轴上重复 |
| rows
| number
| 5 | 重复行数 |
| cols
| number
| 5 | 重复列数 |
| startX
| number
| 20 | px
, 重复水印x
轴起点 |
| startY
| number
| 20 | px
, 重复水印y
轴起点 |
| xGap
| number
| 200 | px
, 重复水印x
轴偏移 |
| yGap
| number
| 100 | px
, 重复水印y
轴偏移 |
ObserverOptions
| Key | 类型 | 默认值 | 描述 |
| ----------------------- | ----------------------- | ----------- | ----------------------------------------------------------------------------------------------------------- |
| childList
| boolean
| true
| 观察目标子节点的变化, 是否有添加或者删除 |
| attributes
| boolean
| true
| 观察属性变动 |
| subtree
| boolean
| true
| 观察后代节点 |
| attributeFilter
| string[]
, undefined
| ['style']
| 特性名称数组, 只观察选定的特性 |
| characterData
| boolean
| | 是否观察 node.data
(文本内容) |
| attributeOldValue
| boolean
| | 如果为 true
, 则将特性的旧值和新值都传递给回调(参见下文), 否则只传新值(需要 attributes
选项) |
| characterDataOldValue
| boolean
| | 如果为 true
, 则将 node.data
的旧值和新值都传递给回调(参见下文), 否则只传新值(需要 characterData
选项) |
APIs 设计
自动水印实现
通过创建 canvas
绘制水印, 并转换成 base64
, 然后添加到外部传入的 dom
上, 并通过 MutationObserver 提供监视用户对 DOM
树所做更改的能力来自动补全删除的水印。(Note: MutationObserver 兼容性)
外部水印
通过外部传入的 image
来实现自动补全删除的水印。