前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >数据万象盲水印功能介绍

数据万象盲水印功能介绍

原创
作者头像
用户4693941
修改于 2019-02-22 11:49:40
修改于 2019-02-22 11:49:40
3.3K0
举报
文章被收录于专栏:盲水印盲水印

一 简介

盲水印功能是腾讯云万象优图提供的全新水印模式。通过该功能,您可将水印图以不可见的形式添加到原图信息中,并不会对原图质量产生太大影响。在图片被盗取后,您可对疑似被盗取的资源进行盲水印提取,验证图片归属。

万象优图提供的盲水印功能拥有半盲、全盲和文字盲水印三种类型:

1. 半盲水印拥有更强的抗攻击性,能抵抗裁剪、涂抹、变色等多种攻击,但提取水印需要原图。

2. 全盲水印无需原图即可提取水印图,但抗攻击性较差;

3. 文字盲水印可直接将文字添加到图片中,无需使用水印图片。

适用场景:

1. 鉴权追责

2. 上传查重

3. 资源防泄漏

二 示例

原图

原图
原图

水印图

水印图
水印图

添加盲水印的图片

添加了盲术印的图片
添加了盲术印的图片

提取盲水印的结果图

盲水印提取结果图
盲水印提取结果图

使用盲水印功能,可以从图片中提取出盲水印图。

三 接口

腾讯云万象优图支持盲水印处理功能,提供两个接口:添加盲水印和提取盲水印。

1 添加盲水印

该接口能为图片添加盲水印,并存储在万象优图。目前,水印图片必须指定为已存储于万象优图中的图片。

图片上传时添加盲水印的请求包与 cos Put Object接口类似,只需将 host 信息更改为万象优图的域名,在请求包头部增加图片处理参数 Pic-Operations 并使用盲水印参数即可。

cos Put Object接口详见https://cloud.tencent.com/document/product/436/7749

请求包

请求包包头示例如下:

PUT /<ObjectName> HTTP/1.1 Host: <BucketName-APPID>.pic.<Region>.myqcloud.com Date: GMT Date Authorization: Auth String Pic-Operations: <PicOperations>

Pic-Operations为json格式的字符串,具体参数如下:

参数名称

类型

必选

描述

is_pic_info

Int

是否返回原图信息,0不返回原图信息,1返回原图信息,默认为0

rules

Array

处理规则,一条规则对应一个处理结果(目前最多支持五条规则),不填则不进行图片处理

rules(Json数组)中每一项具体参数如下:

参数名称

类型

必选

描述

bucket

String

存储结果的目标bucket名称,形如bucketName-appid,如果不指定的话默认保存到当前bucket

fileid

String

处理结果的文件路径名称,如以’/’开头,则存入指定文件夹中,否则,存入原图文件存储的同目录

rule

String

处理参数,参见万象优图图片处理API。 若按指定样式处理,则以”style/”开头,后加样式名,如样式名为”test”,则rule字段为”style/test”

添加盲水印需在 rule 中添加水印图参数(watermark),相关内容如下:

watermark/3/type/<type>/image/<imageUrl>/text/<text>

watermark参数说明:

参数

类型

必选

描述

type

Int

盲水印类型,有效值:1 半盲;2 全盲;3 文字

image

String

盲水印图片地址,需要经过 URL 安全的 Base64 编码。 当type为1或2时必填,type为3时无效。 指定的水印图片必须同时满足如下 3 个条件: 1. 盲水印图片与原图片必须位于同一个对象存储桶下; 2. URL 需使用万象优图源站域名(不能使用CDN 加速、COS 源站域名),如:examplebucket-1250000000.image.myqcloud.com属于 CDN 加速域名,不能在水印 URL 中使用; 3. URL必须以http://开始,不能省略 http 头,也不能填 https 头,如:examplebucket-1250000000.picsh.myqcloud.com/shuiyin_2.png,https://examplebucket-1250000000.picsh.myqcloud.com/shuiyin_2.png就是非法的水印 URL。

text

String

盲水印文字,需要经过 URL 安全的 Base64 编码。 当type为3时必填,type为1或2时无效。

响应包

响应包包体具体数据内容如下:

节点名称

父节点

类型

描述

UploadResult

Container

原图信息

UploadResult节点内容:

节点名称

父节点

类型

描述

OriginalInfo

UploadResult

Container

原图信息

ProcessResults

UploadResult

Container

图片处理结果

OriginalInfo节点内容:

节点名称

父节点

类型

描述

Key

UploadResult .OriginalInfo

String

原图文件名

Location

UploadResult .OriginalInfo

String

图片路径

ImageInfo

UploadResult .OriginalInfo

Container

原图图片信息

ImageInfo节点内容:

节点名称

父节点

类型

描述

Format

UploadResult .OriginalInfo .ImageInfo

String

格式

Width

UploadResult .OriginalInfo .ImageInfo

Int

图片宽度

Height

UploadResult .OriginalInfo .ImageInfo

Int

图片高度

Quality

UploadResult .OriginalInfo .ImageInfo

Int

图片质量

Ave

UploadResult .OriginalInfo .ImageInfo

String

图片主色调

Orientation

UploadResult .OriginalInfo .ImageInfo

Int

图片旋转角度

ProcessResults节点内容:

节点名称

父节点

类型

描述

Object

UploadResult.ProcessResults

Container

每一个图片处理结果

Object节点内容:

节点名称

父节点

类型

描述

Key

UploadResult.ProcessResults.Object

String

文件名

Location

UploadResult.ProcessResults.Object

String

图片路径

Format

UploadResult.ProcessResults.Object

String

图片格式

Width

UploadResult.ProcessResults.Object

Int

图片宽度

Height

UploadResult.ProcessResults.Object

Int

图片高度

Size

UploadResult.ProcessResults.Object

Int

图片大小

Quality

UploadResult.ProcessResults.Object

Int

图片质量

示例

请求

PUT /filename.jpg HTTP/1.1 Host: examplebucket-1250000000.pic.ap-chengdu.myqcloud.com Date: Wed, 28 Oct 2015 20:32:00 GMT Authorization:XXXXXXXXXXXX Pic-Operations:{"rules":[{"fileid":"test.jpg","rule":"watermark/3/type/2/image/XXXXXXXXX"}]} Content-Length: 2000 [Object]

响应

HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 645 Date: Tue, 03 Apr 2018 09:06:16 GMT Status: 200 OK x-cos-request-id:XXXXXXXXXXXXX <UploadResult> <OriginalInfo> <Key> filename.jpg</Key> <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/filename.jpg</Location> </OriginalInfo> <ProcessResults> <Object> <Key>test.jpg</Key> <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/test.jpg</Location> <Format>png</Format> <Width>640</Width> <Height>427</Height> <Size>463092</Size> <Quality>100</Quality> </Object> </ProcessResults> </UploadResult>

2 提取盲水印

该接口为存在盲水印的图片提取盲水印,并存储在万象优图。

盲水印提取的请求包与添加盲水印的请求包一致,只需将请求包头部-图片处理参数 Pic-Operations 中的图片处理参数做修改即可。

提取盲水印需在 rule 中添加水印图参数(watermark),相关内容如下:

watermark/4/type/<type>/image/<imageUrl>

参数说明

参数

类型

必选

描述

type

Int

盲水印类型,有效值:1 半盲;2 全盲;3 文字,必须跟打盲水印的type类型一致

image

String

图片地址,当type为1或2时必填,type为3时无效。 type为1时,为原图图片地址;type为2时,为水印图地址; 需要经过 URL 安全的 Base64 编码。指定的图片必须同时满足如下 3 个条件: 1. 图片与存在水印的图片必须位于同一个对象存储桶下; 2. URL 需使用万象优图源站域名(不能使用CDN 加速、COS 源站域名),如:examplebucket-1250000000.image.myqcloud.com属于 CDN 加速域名,不能在水印 URL 中使用; 3. URL必须以http://开始,不能省略 http 头,也不能填 https 头,如:examplebucket-1250000000.picsh.myqcloud.com/shuiyin_2.png,https://examplebucket-1250000000.picsh.myqcloud.com/shuiyin_2.png就是非法的水印 URL。

返回内容

返回内容中的 UploadResult——ProcessResults——Object 字段中新增 WatermarkStatus 字段,当盲水印提取的请求包中 type 参数为2时携带该参数,其他情况不返回该参数。

参数

类型

父节点

描述

WatermarkStatus

Int

Object

当 type 为2时返回该字段,表示提取到全盲水印的可信度。具体为0-100的数字,75分以上表示确定有盲水印,60-75表示疑似有盲水印,60以下可认为未提取到盲水印

示例

请求

PUT /filename.jpg HTTP/1.1 Host: examplebucket-1250000000.pic.ap-chengdu.myqcloud.com Date: Wed, 28 Oct 2015 20:32:00 GMT Authorization:XXXXXXXXXXXX Pic-Operations:{"rules":[{"fileid":"test.jpg","rule":"watermark/4/type/2/image/XXXXX"}]} Content-Length: 2000 [Object]

响应

HTTP/1.1 200 OK Content-Type: application/xml Content-Length: 645 Date: Tue, 03 Apr 2018 09:06:16 GMT Status: 200 OK x-cos-request-id:XXXXXXXXXXXXX <UploadResult> <OriginalInfo> <Key> filename.jpg</Key> <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/filename.jpg</Location> </OriginalInfo> <ProcessResults> <Object> <Key>test.jpg</Key> <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/test.jpg</Location> <Format>png</Format> <Width>640</Width> <Height>427</Height> <Size>463092</Size> <Quality>100</Quality> <WatermarkStatus>99</WatermarkStatus> </Object> </ProcessResults> </UploadResult>

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
分布式任务调度平台XXL-JOB
XXL-JOB是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
用户1518699
2018/09/12
4.2K0
分布式任务调度平台XXL-JOB
spring boot项目整合xxl-job
关于分布式任务调度平台XXL-JOB,作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里就不做过多的介绍了。按照文档搭建xxl-job,做此记录。
BUG弄潮儿
2020/06/29
4.2K0
分布式任务调度平台XXL-JOB搭建教程
  关于分布式任务调度平台XXL-JOB,其实作者 许雪里 在其发布的中文教程中已经介绍的很清楚了,这里我就不做过多的介绍了,关于其搭建教程,本人依照其文档搭建起来基本上也没遇到啥问题,这里通过博客的形式记录下来。
IT可乐
2019/05/29
2.4K0
分布式任务调度平台XXL-JOB搭建教程
分布式任务调度平台XXL-JOB
任务调度是指基于给定的时间点,给定的时间间隔又或者给定执行次数自动的执行任务。我们可以思考一下在以下场景中,我们应该怎么实现:
我没有三颗心脏
2019/10/08
2.3K0
分布式任务调度平台XXL-JOB
分布式任务调度利器—Xxl-job框架详解
近期开发中的功能中需要用到定时任务来做数据库的备份和文件的定时删除,所以调研了当前比较主流的几个定时任务框架,经过对比选定了今天要讲的xxl-job,所以这篇文章,我主要和大家分享一下xxl-job的学习总结,记录一下在分布式项目下如何优雅的使用xxl-job实现定时任务。
灰小猿
2024/05/25
30.8K0
分布式任务调度利器—Xxl-job框架详解
快速学习-XXL-JOB任务详解
参考上文“配置属性详细说明”对新建的任务进行参数配置,运行模式选中 “BEAN模式”,JobHandler属性填写任务注解“@XxlJob”中定义的值;
cwl_java
2020/09/24
3.5K0
快速学习-XXL-JOB任务详解
分布式任务调度平台XXL-JOB,不了解一下?
任务调度是指基于给定的时间点,给定的时间间隔又或者给定执行次数自动的执行任务。我们可以思考一下在以下场景中,我们应该怎么实现:
Bug开发工程师
2019/12/05
1.3K0
xxl-job【后端专题】
xxl-job-admin目录配置文件 application.properties
高大北
2022/11/14
8041
xxl-job【后端专题】
分布式任务调度xxl-job
在单机应用时期,任务调度一般都是基于spring schedule和集成quartz来实现的,当系统发展成分布式服务,应用多实例的时候,任务就会出现多次调用的问题,很多时候我们任务并不需要跑多次。解决方案有很多,最最简单粗暴的就是可以设置应用开关。其次就是集中式话任务管理调度。当然,quartz也有集群模式,但是基于api控制并不直观。下面介绍一个集中式的分布式任务调度框架,可以很方便的解决分布式任务调度的问题
kl博主
2023/11/18
4400
分布式任务调度框架XXL-JOB入门级教程
下载源码导入idea,源码地址:https://gitee.com/xuxueli0323/xxl-job.git
小熊学Java
2023/07/16
1.3K0
分布式任务调度框架XXL-JOB入门级教程
springboot整合xxl-job 分布式任务调度
注意:调度中心支持集群部署,集群情况下各节点务必连接同一个mysql实例,如果mysql做主从,调度中心集群节点务必强制走主库
用户10125653
2022/11/10
1.3K0
springboot整合xxl-job 分布式任务调度
【黑马头条】day20—xxl-job
当前软件的架构已经开始向分布式架构转变,将单体结构拆分为若干服务,服务之间通过网络交互来完成业务处理。在分布式架构下,一个服务往往会部署多个实例来运行我们的业务,如果在这种分布式系统环境下运行任务调度,我们称之为分布式任务调度。
陶然同学
2023/04/02
7050
【黑马头条】day20—xxl-job
XXL-JOB系列一之架构设计
XXL-JOB是一个分布式的任务调度平台,核心设计目标是开发迅速、学习简单、轻量级、易扩展。
用户9511949
2024/06/20
2330
分布式调度XXL-JOB
在业务类中方法中贴上这个注解,然后在启动类上贴上@EnableScheduling注解
yuanshuai
2023/11/17
3330
分布式调度XXL-JOB
xxl-job Vs ElasticJob,谁牛?
1. xxl-job 2. 运行 xxl-job 3. 开发定时任务 3.1 项目创建及配置 3.2 定时任务开发方式 4. 小结 前两天写了一篇文章介绍了一下 ElasticJob,有不少小伙伴强烈建议讲讲 xxl-job,其实 ElasticJob 本来就是一个引子,松哥本来就是想和大家分享 xxl-job 的(手动狗头。 1. xxl-job 松哥也在微信群里和小伙伴们讨论过各自到底用的是 xxl-job 还是 ElasticJob,讨论的结果就是,xxl-job 使用的人更多一些。 不说功能的优劣,
江南一点雨
2022/03/24
2K0
快速学习-XXL-JOB快速入门
解压源码,按照maven格式将源码导入IDE, 使用maven进行编译即可,源码结构如下:
cwl_java
2020/09/24
1K0
快速学习-XXL-JOB快速入门
分布式任务调度平台 XXL-JOB 2.0.0 发布
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
Debian中国
2018/12/21
1.1K1
【进阶之路】定时任务调用平台xxl-job
.markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{line-height:1.5;margin-top:35px;margin-bottom:10px;padding-bottom:5px}.markdown-body h1{font-size:30px;margin-bottom:5px}.markdown-body h2{padding-bottom:12px;font-size:24px;border-bottom:1px solid #ececec}.markdown-body h3{font-size:18px;padding-bottom:0}.markdown-body h4{font-size:16px}.markdown-body h5{font-size:15px}.markdown-body h6{margin-top:5px}.markdown-body p{line-height:inherit;margin-top:22px;margin-bottom:22px}.markdown-body img{max-width:100%}.markdown-body hr{border:none;border-top:1px solid #ddd;margin-top:32px;margin-bottom:32px}.markdown-body code{word-break:break-word;border-radius:2px;overflow-x:auto;background-color:#fff5f5;color:#ff502c;font-size:.87em;padding:.065em .4em}.markdown-body code,.markdown-body pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}.markdown-body pre{overflow:auto;position:relative;line-height:1.75}.markdown-body pre>code{font-size:12px;padding:15px 12px;margin:0;word-break:normal;display:block;overflow-x:auto;color:#333;background:#f8f8f8}.markdown-body a{text-decoration:none;color:#0269c8;border-bottom:1px solid #d1e9ff}.markdown-body a:active,.markdown-body a:hover{color:#275b8c}.markdown-body table{display:inline-block!important;font-size:12px;width:auto;max-width:100%;overflow:auto;border:1px solid #f6f6f6}.markdown-body thead{background:#f6f6f6;color:#000;text-align:left}.markdown-body tr:nth-child(2n){background-color:#fcfcfc}.markdown-body td,.markdown-body th{padding:12px 7px;line-height:24px}.markdown-body td{min-width:120px}.markdown-body blockquote{color:#666;padding:1px 23px;margin:22px 0;border-left:4px solid #cbcbcb;background-color:#f8f8f8}.markdown-body blockquote:after{display:block;content:""}.markdown-body blockquote>p{margin:10px 0}.markdown-body ol,.markdown-body ul{padding-left:28px}.markdown-body ol li,.markdown-body
南橘
2021/04/02
1.1K0
【进阶之路】定时任务调用平台xxl-job
SpringBoot入门建站全系列(三十二)接入xxl-job分布式任务调度平台
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
品茗IT
2020/05/28
1.6K0
从简单到复杂学习任务调度(2)-xxl-job基本原理和使用
上一篇对Java层面提供的以及和Spring提供的任务调度方式有了一定的了解,也分析出了它们的弊端,不过学习它们还是很有必要的,因为任务调度机制的思想和这些类差不多,只不过一个功能强大的任务调度工具会额外添加很多功能,使其更加灵活,更加全面,更加可控,比如Timer类会使用TaskQueue来存储任务,TimerThread获取到的TimerTask总是最先执行的任务,是因为TimerQueue是一个最小堆,它会将最先执行的任务放在堆顶,然后按照时间顺序进行排序,而在xxl-job中,会有一个守护线程去扫描数据库,获取可执行的任务,然后根据此任务的一些配置去解析出此任务的调度方式。
小四的技术之旅
2023/03/02
2.2K0
从简单到复杂学习任务调度(2)-xxl-job基本原理和使用
推荐阅读
相关推荐
分布式任务调度平台XXL-JOB
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档