一 简介
盲水印功能是腾讯云万象优图提供的全新水印模式。通过该功能,您可将水印图以不可见的形式添加到原图信息中,并不会对原图质量产生太大影响。在图片被盗取后,您可对疑似被盗取的资源进行盲水印提取,验证图片归属。
万象优图提供的盲水印功能拥有半盲、全盲和文字盲水印三种类型:
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>.myzijiebao.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.myzijiebao.com属于 CDN 加速域名,不能在水印 URL 中使用; 3. URL必须以http://开始,不能省略 http 头,也不能填 https 头,如:examplebucket-1250000000.picsh.myzijiebao.com/shuiyin_2.png,https://examplebucket-1250000000.picsh.myzijiebao.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.myzijiebao.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.myzijiebao.com/filename.jpg</Location> </OriginalInfo> <ProcessResults> <Object> <Key>test.jpg</Key> <Location>examplebucket-1250000000.cos.ap-chengdu.myzijiebao.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.myzijiebao.com属于 CDN 加速域名,不能在水印 URL 中使用; 3. URL必须以http://开始,不能省略 http 头,也不能填 https 头,如:examplebucket-1250000000.picsh.myzijiebao.com/shuiyin_2.png,https://examplebucket-1250000000.picsh.myzijiebao.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.myzijiebao.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.myzijiebao.com/filename.jpg</Location> </OriginalInfo> <ProcessResults> <Object> <Key>test.jpg</Key> <Location>examplebucket-1250000000.cos.ap-chengdu.myzijiebao.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> |
---|