更新记录

1.0.3(2023-10-27)

添加文字水印时,超长文字自动换行

1.0.2(2023-04-21)

添加水印逻辑优化,提升水印添加速度、优化水印显示位置细节

1.0.1(2023-04-06)

修改偶现添加水印后返回到uniapp的图片地址无法使用的bug

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:5.0 - 12.0 armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择


watermark给图片添加水印的安卓原生插件

  • 支持Android平台使用 (目前只支持本地图片,后续会完善支持网络图片)
  1. 函数说明
序号 函数名称 函数说明
1 addTextWatermark(String json,callback) 给图片添加文字水印,详细说明见下方
2 addPictureWatermark(String json,callback) 给图片添加图片水印,详细说明见下方
  • addTextWatermark(String json,callback)给图片添加文字水印

    一、参数1示例:
      {
        imgPath: plus.io.convertLocalFileSystemURL(imgPath),//需要添加水印的图片地址
        watermarkTexts: ['watermarkText','xxxxxx'],//做为水印显示在图片上的文字
        textColor: '#FFFFFF',//水印文字颜色
        textSize: 13,//水印文字大小
        watermarkAlign: 'left_bottom',//水印显示的位置(目前默认为左下角)
        alpha: 200//水印透明度值(0 - 255) ,值越小越透明
      }
    
    二、参数2为回调函数
    
    三、该函数回调结果示例如下
      {
          "code":0,
          "message":"添加水印成功",
          "data":{
              "data":"file:///storage/emulated/0/Android/data/com.test.exit/cache/watermark/20230331133327.png"
          }
      }
  • addPictureWatermark(String json,callback)给图片添加图片水印

    一、参数1示例:
      {
        imgPath: plus.io.convertLocalFileSystemURL(imagePath),//需要添加水印的图片地址
        watermarkPicture:plus.io.convertLocalFileSystemURL(watermark),//作为水印的图片
        watermarkAlign: 'left_bottom',//水印显示的位置
        alpha: 100,//水印透明度值(0 - 255) ,值越小越透明
        watermarkWidth:100,//水印图片的宽,不设置则默认为watermarkPicture图片的宽
        watermarkHeight:100//水印图片的高,不设置则默认为watermarkPicture图片的高
      }
      注:
      作为水印的图片 watermarkPicture 属性值说明,使用项目中static目录下的图片时,格式如下:
      '/static/3.jpg'
    
    二、参数2为回调函数
    
    三、该函数回调结果示例如下
      {
          "code":0,
          "message":"添加水印成功",
          "data":{
              "data":"file:///storage/emulated/0/Android/data/com.test.exit/cache/watermark/20230331133327.png"
          }
      }
  • 参数1中水印显示的位置属性watermarkAlign的取值

    序号 水印显示位置
    1 left_top 左上角
    2 left_center 左边居中
    3 left_bottom 左下角
    4 top_center 顶部居中
    5 center 完全居中
    6 bottom_center 底部居中
    7 right_top 右上角
    8 right_center 右边居中
    9 right_bottom 右下角
  • code 值说明

    序号 code值 说明
    1 0 成功
    2 -1 失败,具体信息请查看回调结果
  • 使用示例

    <template>
        <view class="uni-column">
            <view class="uni-column">
                <text>水印位置</text>
                <view class="uni-row" style="justify-content: center;">
                    <text :class="gravity=='left_top'?'gravity':'gravity1'"
                        @click="clickGravity('left_top')">left_top</text>
                    <text :class="gravity=='left_center'?'gravity':'gravity1'"
                        @click="clickGravity('left_center')">left_center</text>
                    <text :class="gravity=='left_bottom'?'gravity':'gravity1'"
                        @click="clickGravity('left_bottom')">left_bottom</text>
                    <text :class="gravity=='top_center'?'gravity':'gravity1'"
                        @click="clickGravity('top_center')">top_center</text>
                    <text :class="gravity=='center'?'gravity':'gravity1'" @click="clickGravity('center')">center</text>
                </view>
                <view class="uni-row" style="justify-content: center;">
                    <text :class="gravity=='bottom_center'?'gravity':'gravity1'"
                        @click="clickGravity('bottom_center')">bottom_center</text>
                    <text :class="gravity=='right_top'?'gravity':'gravity1'"
                        @click="clickGravity('right_top')">right_top</text>
                    <text :class="gravity=='right_center'?'gravity':'gravity1'"
                        @click="clickGravity('right_center')">right_center</text>
                    <text :class="gravity=='right_bottom'?'gravity':'gravity1'"
                        @click="clickGravity('right_bottom')">right_bottom</text>
                </view>
            </view>
            <view class="uni-row" style="margin-top: 20rpx;">
                <view class="uni-column" style="width: 50%;">
                    <button @click="addText()">添加文字水印</button>
                    <view class="uni-column" style="align-items: center;justify-content: center;">
                        <text>原始图片</text>
                        <image :src="originImage" mode=""></image>
                    </view>
                    <view class="uni-column" style="align-items: center;justify-content: center;margin-top: 20rpx;">
                        <text>水印图片</text>
                        <image :src="watermarkImage" mode="" @click="clickImage()"></image>
                    </view>
                </view>
                <view class="uni-column" style="width: 50%;">
                    <button @click="addPicture()">添加图片水印</button>
                    <view class="uni-column" style="align-items: center;justify-content: center;">
                        <text>原始图片</text>
                        <image :src="originImage1" mode=""></image>
                    </view>
                    <view class="uni-column" style="align-items: center;justify-content: center;margin-top: 20rpx;">
                        <text>水印图片</text>
                        <image :src="watermarkImage1" mode="" @click="clickImage()"></image>
                    </view>
                </view>
            </view>
        </view>
    </template>
    
    <script>
        const module = uni.requireNativePlugin("jushi-watermark")
        export default {
            data() {
                return {
                    gravity: 'left_bottom',//水印显示的位置  
                    originImage: '',
                    watermarkImage: '',
                    originImage1: '',
                    watermarkImage1: ''
                }
            },
            methods: {
                addText() {
                    let that = this
                    uni.chooseImage({
                        sizeType: ['compressed'],
                        count: 1,
                        success(res) {
                            console.log(JSON.stringify(res))
                            that.addTextWatermark(res.tempFilePaths[0])
                        },
                        fail(res) {
    
                        }
                    })
                },
                addTextWatermark(imgPath) { //给图片添加文字水印
                    this.originImage = imgPath
                    uni.showLoading({
                        title: '图片处理中...',
                    })
                    let txt = '这是水印文字啊'
                    module.addTextWatermark({
                        imgPath: plus.io.convertLocalFileSystemURL(imgPath), //需要添加水印的图片地址
                        watermarkTexts: [txt,
                            `${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1${txt}1`,
                            `${txt}1${txt}2`, `${txt}3${txt}3${txt}3`
                        ], //最为水印显示在图片上的文字
                        textColor: '#FF0000', //水印文字颜色 
                        textSize: 16, //水印文字大小
                        watermarkAlign: this.gravity, //水印显示的位置
                        alpha: 200 //水印透明度值(0 - 255) ,值越小越透明
                    }, res => {
                        console.log(res)
                        uni.hideLoading()
                        this.watermarkImage = JSON.parse(res).data.data
                    })
                },
                addPicture() {
                    let that = this
                    uni.chooseImage({
                        sizeType: ['compressed'],
                        count: 1,
                        success(res) {
                            console.log(JSON.stringify(res))
                            that.addPictureWatermark(res.tempFilePaths[0], '/static/images/slider-verify/3.jpg')
                        },
                        fail(res) {
    
                        }
                    })
                },
                addPictureWatermark(imagePath, watermark) { //给图片添加图片水印
                    this.originImage1 = imagePath
                    module.addPictureWatermark({
                        imgPath: plus.io.convertLocalFileSystemURL(imagePath), //需要添加水印的图片地址
                        watermarkPicture: plus.io.convertLocalFileSystemURL(watermark), //作为水印的图片
                        watermarkAlign: this.gravity, //水印显示的位置
                        alpha: 140, //水印透明度值(0 - 255) ,值越小越透明
                        watermarkWidth: 600, //水印图片的宽,不设置则默认为watermarkPicture图片的宽
                        watermarkHeight: 500 //水印图片的高,不设置则默认为watermarkPicture图片的高
                    }, res => {
                        console.log(res)
                        this.watermarkImage1 = JSON.parse(res).data.data
                    })
                },
                clickImage() {
                    uni.previewImage({
                        urls: [this.watermarkImage1],
                        current: 1,
                        complete(res) {
                            console.log(JSON.stringify(res))
                        }
                    })
                },
                clickGravity(gravity){
                    this.gravity = gravity
                }
            }
        }
    </script>
    
    <style>
        .uni-column {
            display: flex;
            flex-direction: column;
        }
    
        .uni-row {
            display: flex;
            flex-direction: row;
        }
    
        image {
            width: 100%;
            height: 500rpx;
        }
    
        .gravity {
            padding: 6rpx 4rpx;
            color: #04c990;
            border: #04c990 1rpx solid;
            font-size: 28rpx;
            border-radius: 6rpx;
            margin: 10rpx;
        }
    
        .gravity1 {
            padding: 6rpx 4rpx;
            color: #666666;
            border: #666666 1rpx solid;
            font-size: 28rpx;
            border-radius: 6rpx;
            margin-right: 10rpx;
            margin: 10rpx;
        }
    </style>
  • 示例应用下载

    扫码下载体验

    其它插件

    安卓原生插件

  • 文件在线预览

  • 银联支付线上收银台(通用版) 封装

  • 阿里云RTC音视频通话

  • 权限请求

  • 文字转语音

  • MQTT连接

  • 获取手机通讯录联系人

  • 快捷工具悬浮窗

  • 日历日程事件

  • 获取本地音频文件信息

  • 根据经纬度获取位置信息

  • WebSocket连接

  • 高德地图封装安卓原生地图扩展组件

  • 使用ECharts封装的安卓原生扩展组件

  • 给图片添加水印

  • 自定义通知栏通知

    UTS插件

  • 安卓权限请求UTS插件

  • 安卓文字转语音UTS插件

  • 安卓获取音频文件UTS插件

    前端插件

  • ECharts封装全端通用组件

  • 图片添加水印,支持微信小程序、H5

  • 手写签名、电子签名组件

隐私、权限声明

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

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

本插件不采集任何数据

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

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问