本文目录
显示
1.
盲水印功能简介
2.
盲水印适用场景
2.1.
鉴权追责
2.2.
上传查重
2.3.
资源防泄露
3.
添加盲水印流程
3.1.
上传时添加
3.1.1.
请求语法
3.1.2.
请求内容
3.1.3.
参数说明
3.1.4.
返回内容
3.2.
示例
3.2.1.
请求
3.2.2.
响应包体
3.3.
下载时添加
3.3.1.
参数说明
4.
提取盲水印流程
4.1.
请求语法
4.2.
请求内容
4.3.
参数说明
4.4.
返回内容
4.5.
示例
4.5.1.
请求
4.5.2.
响应包体
盲水印功能简介
盲水印功能是腾讯云数据万象提供的全新水印模式。通过该功能,用户可将水印图以不可见的形式添加到原图信息中,并不会对原图质量产生太大影响。在图片被盗取后,用户可对疑似被盗取的资源进行盲水印提取,验证图片归属。
数据万象提供的盲水印功能拥有半盲、全盲和文字盲水印三种类型:
水印类型 | 特性 | 适用场景 |
---|---|---|
半盲水印(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 简单上传文件接口详情,请参见 COSPUT 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****
exampleobjectexamplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobjectJPEG6404271000xa184541
注意:
- 请求包包体的 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 简单上传文件接口详情,请参见 COSPUT 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****
exampleobject1examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject1JPEG6404271000xa184541
注意:
- 对于 type 值为1的请求,包头 Pic-Operations 的 rule 字段中,imageUrl 为未带盲水印的原图图片地址;对于 type 值为2的请求,包头 Pic-Operations 的 rule 字段中,imageUrl 为水印图片的地址。
- 返回包 ProcessResults 字段的 url 为提取出来的水印图片地址。