盲水印功能简介
盲水印功能是腾讯云数据万象提供的全新水印模式。通过该功能,用户可将水印图以不可见的形式添加到原图信息中,并不会对原图质量产生太大影响。在图片被盗取后,用户可对疑似被盗取的资源进行盲水印提取,验证图片归属。
数据万象提供的盲水印功能拥有半盲、全盲和文字盲水印三种类型:
水印类型 | 特性 | 适用场景 |
---|---|---|
半盲水印(type1) | 抗攻击性强,但提取水印需原图 | 小图(640×640以下)使用 |
全盲水印(type2) | 提取方便,提取水印仅需水印图,无需对比原图 | 批量添加,批量校验 |
文字水印(type3) | 可直接将文字信息添加至图片中 | 终端信息添加 |
盲水印是付费服务,使用时需在相应存储桶配置页中通过开关开通服务。每个账户拥有三千次免费额度,超出后进行计费。具体费用请参见 购买指南。
说明:
- 使用盲水印功能,水印图的宽高不得超过原图的1/8。
- 为保证盲水印效果,水印图请选用黑底白色图片。
- 数据万象为每个账户提供每月3000张的免费体验额度,超出后将正常计费。未使用额度不会累积至下一月。
- 文字盲水印当前支持数字[0 – 9]及英文大小写[A – Z,a – z]。
- 盲水印可抵抗裁剪、涂抹、变色等多种图片盗取攻击,防盗效果与原图大小及攻击程度相关。
盲水印适用场景
鉴权追责
用户可对图片资源增加半盲水印,在发现恶意攻击方盗取用户的资源后将疑似被盗取图取回,并与相应原图进行盲水印提取操作,若能够得到有效水印图即可证明资源归属。
上传查重
为解决部分用户使用其他用户资源重复上传相同信息的问题(如房产图、汽车图、商品图等),用户可在用户上传图片资源前先进行全盲水印提取,若提取到水印图信息则证明该图片来自之前已有资源,并进行相应操作(如提醒用户请勿重复上传资源);若不存在全盲水印则添加全盲水印,保护图片资源不被其他用户下载后重复上传。
资源防泄露
对于内部分享的图片资源,用户可通过文字盲水印将访问方的信息在请求图片时添加至图片中,当资源泄露后可通过流传出的资源图提取出盲水印,进而得到泄露方信息。
添加盲水印流程
上传时添加
请求语法
图片上传时添加盲水印的请求包与 COS 简单上传文件接口一致,只需在请求包头部增加图片处理参数 Pic-Operations 并使用盲水印参数即可。以 COS 上传时添加盲水印为例:
PUT / HTTP/1.1 Host: .cos. .myqcloud.com Date: GMT Date Authorization: Auth String Pic-Operations:
说明:
- COS 简单上传文件接口详情,请参见 COS PUT Object 文档。
- Authorization: Auth String (详细请参见 请求签名 文档)。
请求内容
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/ /image/ /text/ /level/
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
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头,也不能填 http://,例如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时无效。 |
level | Int | 否 | 只对全盲水印(type=2)有效。level 的取值范围为{1,2,3},默认值为1,level 值越大则图片受影响程度越大、盲水印效果越好。 |
返回内容
响应包体具体数据内容如下:
参数名称 | 类型 | 描述 |
---|---|---|
UploadResult | Container | 原图信息 |
UploadResult 节点内容:
参数名称 | 类型 | 描述 |
---|---|---|
OriginalInfo | Container | 原图信息 |
ProcessResults | Container | 图片处理结果 |
OriginalInfo 节点内容:
节点名称 | 类型 | 描述 |
---|---|---|
Key | String | 原图文件名 |
Location | String | 图片路径 |
ImageInfo | Container | 原图图片信息 |
ImageInfo 节点内容:
节点名称 | 类型 | 描述 |
---|---|---|
Format | String | 格式 |
Width | Int | 图片宽度 |
Height | Int | 图片高度 |
Quality | Int | 图片质量 |
Ave | String | 图片主色调 |
Orientation | Int | 图片旋转角度 |
ProcessResults 节点内容:
节点名称 | 类型 | 描述 |
---|---|---|
Object | Container | 每一个图片处理结果 |
Object 节点内容:
节点名称 | 类型 | 描述 |
---|---|---|
Key | String | 文件名 |
Location | String | 图片路径 |
Format | String | 图片格式 |
Width | Int | 图片宽度 |
Height | Int | 图片高度 |
Size | Int | 图片大小 |
Quality | Int | 图片质量 |
说明:
腾讯云 COS 会默认为每个资源生成经 CDN 的访问链接 access_url,当业务端尚未开通 CDN 时,仍然可以获得该链接,但是无法访问。
示例
请求
PUT /exampleobject HTTP/1.1 Host: examplebucket-1250000000.cos.ap-chengdu.myqcloud.com Date: Tue, 03 Apr 2018 09:06:15 GMT Authorization:XXXXXXXXXXXX Pic-Operations: { "is_pic_info": 1, "rules": [{ "fileid": "exampleobject", "rule": "watermark/3/type/1/image/aHR0cDovL2V4YW1wbGVzLTEyNTEwMDAwMDQucGljc2gubXlxY2xvdWQuY29tL3NodWl5aW4uanBn" }] } Content-Length: 64 [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: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z**** exampleobject examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject JPEG 640 427 100 0xa18454 1 exampleobject examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject png 640 427 463092 100
注意:
- 请求包包体的 filecontent 字段为原图的图片内容,包头 Pic-Operations 的 rule 字段中,imageUrl 为水印图片地址。
- 返回包 process_results 字段的 url 为携带盲水印的图片地址。
下载时添加
图片下载时添加盲水印与添加普通水印操作相同,只需在图片访问链接后使用 watermark 参数即可。相关内容如下:
watermark/3/type/ /image/ /text/
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
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时无效。 |
示例
http://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/sample.jpeg?watermark/3/type/3/text/dGVuY2VudCBjbG91ZA==
提取盲水印流程
请求语法
提取盲水印的请求包与 COS 简单上传文件接口一致,只需在请求包头部增加图片处理参数 Pic-Operations 并使用提取盲水印参数(watermark/4)即可。相关示例如下:
PUT / HTTP/1.1 Host: .cos. .myqcloud.com Date: GMT Date Authorization:XXXXXXXXXXXX Pic-Operations:
说明:
- COS 简单上传文件接口详情,请参见 COS PUT Object 文档。
- Authorization: Auth String (详细请参见 请求签名 文档)。
请求内容
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/4/type/ /image/ /text/
参数说明
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
type | Int | 是 | 盲水印类型,有效值:1 半盲;2 全盲;3 文字,必须跟添加盲水印时的 type 类型一致。 |
image | String | 否 | 图片地址,根据 type 值填写: 当 type 为1,则 image 必填,且为原图图片地址; 当 type 为2,则 image 必填,且为水印图地址; 当 type 为3,则 image 无需填写(无效)。 image 需要经过 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。 |
text | String | 否 | 盲水印文字,需要经过 URL 安全的 Base64 编码。 当 type 为3时必填,type 为1或2时无效。 |
返回内容
返回内容中的 UploadResult——ProcessResults——Object 字段中新增 WatermarkStatus 字段,当盲水印提取的请求包中 type 参数为2时携带该参数,其他情况不返回该参数。
参数 | 类型 | 父节点 | 描述 |
---|---|---|---|
WatermarkStatus | Int | Object | 当 type 为2时返回该字段,表示提取到全盲水印的可信度。具体为0-100的数字,75分以上表示确定有盲水印,60-75表示疑似有盲水印,60以下可认为未提取到盲水印 |
示例
请求
PUT /exampleobject1 HTTP/1.1 Host: examplebucket-1250000000.cos.ap-chengdu.myqcloud.com Date: Tue, 03 Apr 2018 09:06:15 GMT Authorization:XXXXXXXXXXXX Pic-Operations: { "is_pic_info": 1, "rules": [{ "fileid": "exampleobject2", "rule": "watermark/4/type/1/image/aHR0cDovL2V4YW1wbGVzLTEyNTEwMDAwMDQucGljc2gubXlxY2xvdWQuY29tL2ZpbGVuYW1lLmpwZWc=" }] } Content-Length: 64 [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: NWFjMzQ0MDZfOTBmYTUwXzZkZV8z**** exampleobject1 examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject1 JPEG 640 427 100 0xa18454 1 exampleobject2 examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject2 png 640 427 463092 100
注意:
- 对于 type 值为1的请求,包头 Pic-Operations 的 rule 字段中,imageUrl 为未带盲水印的原图图片地址;对于 type 值为2的请求,包头 Pic-Operations 的 rule 字段中,imageUrl 为水印图片的地址。
- 返回包 ProcessResults 字段的 url 为提取出来的水印图片地址。