更新记录

1.0.1(2025-11-21)

修复编译问题

1.0.0(2025-11-21)

✨ 新增功能


平台兼容性

uni-app(3.6.14)

Vue2 Vue2插件版本 Vue3 Vue3插件版本 Chrome Chrome插件版本 Safari Safari插件版本 app-vue app-vue插件版本 app-nvue app-nvue插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙
√ 1.0.1 √ 1.0.1 √ 1.0.1 √ 1.0.1 √ 1.0.1 √ 1.0.1 5.1 1.0.1 12 1.0.1 -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

uni-app x(3.6.14)

Chrome Chrome插件版本 Safari Safari插件版本 Android Android插件版本 iOS iOS插件版本 鸿蒙 微信小程序
√ 1.0.1 √ 1.0.1 5.1 1.0.1 12 1.0.1 - -

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
√ √ √ √

hy-smart-watermark

可动态配置的全端防截屏智能水印插件

✨ 特性

  • 🎨 文本/图片水印 - 支持文本和图片两种水印类型
  • 🔒 安全防护 - 采用原生 Canvas 渲染,不易被 DOM 操作移除
  • 🎭 动态浮动 - 支持静态和动态浮动两种模式,动态水印实时位移,增加抠图难度
  • 🔐 伪随机加密 - 可选密钥生成伪随机偏移序列,增加防篡改难度
  • 📱 全端兼容 - H5 / App (Android/iOS) / 小程序全平台支持
  • 📏 自动适配 - Android 端自动处理 dp/px 单位转换,确保多端显示大小一致
  • ⚡ 高性能 - 原生渲染,流畅不卡顿
  • 🎯 零权限 - 无需任何系统权限
  • 🛠️ 易集成 - 简单配置,开箱即用

🚀 快速开始

API 方式调用(APP 端推荐)

<template>
  <view>
    <button @click="addWatermark">添加水印</button>
    <button @click="removeWatermark">移除水印</button>
  </view>
</template>

<script>
import { createWatermark, destroyWatermark } from '@/uni_modules/hy-smart-watermark'

export default {
  data() {
    return {
      watermarkId: ''
    }
  },
  methods: {
    addWatermark() {
      createWatermark({
        content: '保密文档 - 禁止截屏',
        type: 'text',
        mode: 'dynamic',
        fontSize: 16,      // 逻辑像素 (dp/pt)
        fontColor: '#000000',
        opacity: 0.15,
        rotate: -20,
        gapX: 200,         // 逻辑像素 (dp/pt)
        gapY: 150,         // 逻辑像素 (dp/pt)
        floatRange: 5,     // 逻辑像素 (dp/pt)
        secret: 'my-secret-key',
        success: (res) => {
          this.watermarkId = res.watermarkId
          console.log('水印创建成功', res)
        },
        fail: (err) => {
          console.error('水印创建失败', err)
        }
      })
    },
    removeWatermark() {
      if (this.watermarkId) {
        destroyWatermark({
          watermarkId: this.watermarkId,
          success: (res) => {
            console.log('水印销毁成功', res)
          }
        })
      }
    }
  }
}
</script>

组件方式调用(H5/小程序推荐)

<template>
  <view>
    <hy-watermark
      content="保密文档 - 禁止截屏"
      :visible="showWatermark"
      mode="dynamic"
      :fontSize="16"
      :opacity="0.15"
      :rotate="-20"
      :gapX="200"
      :gapY="150"
      :floatRange="5"
      secret="my-secret-key"
    />

    <button @click="showWatermark = !showWatermark">
      {{ showWatermark ? '隐藏水印' : '显示水印' }}
    </button>
  </view>
</template>

<script>
import HyWatermark from '@/uni_modules/hy-smart-watermark/components/hy-watermark/hy-watermark.vue'

export default {
  components: {
    HyWatermark
  },
  data() {
    return {
      showWatermark: true
    }
  }
}
</script>

📖 API 文档

createWatermark(options)

创建水印实例。

参数说明 (WatermarkOptions)

💡 单位说明:所有数值类型的参数(fontSize, gapX, gapY, floatRange 等)均使用逻辑像素 (dp/pt)。插件内部会自动处理 Android 端的 dp 转 px,确保在不同像素密度的设备上显示大小一致。

参数名 类型 必填 默认值 说明
content String 是 - 水印内容(文本内容或图片URL)
type String 否 'text' 水印类型:'text' | 'image'
mode String 否 'static' 水印模式:'static' (静态) | 'dynamic' (动态浮动)
position String 否 'fixed' 位置模式:'fixed' (固定) | 'absolute' (绝对)
fontSize Number 否 16 字体大小 (dp/pt)
fontColor String 否 '#000000' 字体颜色 (Hex)
fontFamily String 否 'sans-serif' 字体族
rotate Number 否 -20 旋转角度 (-180 ~ 180)
opacity Number 否 0.15 透明度 (0 ~ 1)
gapX Number 否 200 水平间距 (dp/pt)
gapY Number 否 150 垂直间距 (dp/pt)
width Number 否 120 图片水印宽度 (dp/pt)
height Number 否 60 图片水印高度 (dp/pt)
offscreenRendering Boolean 否 true 是否启用离屏渲染 (Android端建议关闭以提高稳定性)
floatRange Number 否 5 动态浮动最大偏移量 (dp/pt)
floatDuration Number 否 3000 动态浮动动画周期 (毫秒)
secret String 否 '' 伪随机密钥 (用于生成不可预测的随机偏移)
zIndex Number 否 9999 z-index 层级
monitorScroll Boolean 否 true 是否监听页面滚动
success Function 否 - 成功回调
fail Function 否 - 失败回调
complete Function 否 - 完成回调

返回值(success 回调)

{
  watermarkId: string,  // 水印实例ID
  success: boolean,     // 是否成功
  message: string       // 消息
}

destroyWatermark(options)

销毁水印实例。

参数名 类型 必填 说明
watermarkId String 否 水印实例ID,不传则销毁所有
success Function 否 成功回调
fail Function 否 失败回调
complete Function 否 完成回调

updateWatermark(params)

更新已存在的水印实例配置。

参数说明 (UpdateParams)

参数名 类型 必填 说明
watermarkId String 是 目标水印实例ID
options Object 是 新的水印配置 (WatermarkOptions),支持增量更新
success Function 否 成功回调
fail Function 否 失败回调
complete Function 否 完成回调

🎯 使用场景

  • 📄 企业文档 - OA系统、文档管理、合同查看
  • 🎓 在线教育 - 课件展示、考试系统、培训平台
  • 📊 数据报表 - 敏感数据展示、BI系统
  • 💼 商业应用 - CRM、ERP等企业级应用
  • 🏥 医疗系统 - 病历查看、检查报告
  • 🏦 金融应用 - 账户信息、交易记录

⚠️ 注意事项

  1. 前端水印非绝对安全:前端水印主要起到提醒和威慑作用,无法完全阻止截屏(如系统级截屏),如需绝对安全请配合后端措施(如DRM)。
  2. 性能考虑:动态浮动模式 (mode: 'dynamic') 会持续触发重绘,虽然已做性能优化,但在低端设备上仍建议谨慎使用或减少水印数量(增大 gapX/gapY)。
  3. 单位适配:插件已内置单位转换,开发时请统一使用逻辑像素 (dp/pt),无需手动计算物理像素。
  4. 层级遮挡:默认 zIndex 为 9999,如果被其他组件遮挡,请适当调大该值。

🔧 进阶配置

自定义动态浮动

createWatermark({
  content: '机密文件',
  mode: 'dynamic',
  floatRange: 10,          // 增大浮动范围 (dp)
  floatDuration: 2000,     // 加快动画速度 (2秒一圈)
  secret: 'random-seed'    // 使用密钥生成固定的随机轨迹
})

图片水印

createWatermark({
  type: 'image',
  content: '/static/logo.png', // 支持本地路径或网络URL
  width: 100,
  height: 50,
  opacity: 0.2
})

高密度水印

createWatermark({
  content: 'CONFIDENTIAL',
  gapX: 100,    // 减小间距
  gapY: 80,
  fontSize: 12,
  opacity: 0.1
})

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。