tencent cloud

文档反馈

盲水印

最后更新时间:2024-01-18 15:11:52

    简介

    盲水印功能是指将水印以不可见的形式添加到图片中,这样的水印不会图片观感产生影响,同时也保证了图片的原创性。当发现图片被盗取后,您可以通过 提取盲水印,将不可见的水印提取出来,验证图片的归属。 通过该 API 接口,您可以:
    在上传时为图片添加盲水印、提取盲水印
    对 COS 上的图片添加盲水印、提取盲水印
    在下载时为图片添加盲水印(不支持下载时提取盲水印)
    数据万象提供的盲水印功能拥有半盲水印、全盲水印和文字盲水印三种类型:
    水印类型
    特性
    适用场景
    半盲水印(type1)
    抗攻击性强,但提取水印需原图
    小图(640px x 640px以下)使用
    全盲水印(type2)
    提取方便,提取水印仅需水印图,无需对比原图
    批量添加,批量校验
    文字盲水印(type3)
    可直接将文字信息添加至图片中
    终端信息添加
    盲水印是付费服务,使用时需在相应存储桶配置页中通过开关开通服务。具体费用请参见 图片处理费用
    说明:
    暂不支持为动图(例如 GIF 图片)添加盲水印。
    使用盲水印功能,水印图的宽高不得超过原图的1/8。
    为保证盲水印效果,水印图请选用黑底白色图片。
    文字盲水印当前支持数字[0 - 9]及英文大小写[A - Z,a - z]。
    盲水印可抵抗裁剪、涂抹、变色等多种图片盗取攻击,防盗效果与原图大小及攻击程度相关。如需详细咨询请 提交工单
    盲水印已支持数据万象所有地域,详情请查看 地域与域名

    适用场景

    鉴权追责

    您可对图片资源增加半盲水印,在发现恶意攻击方盗取您的资源后将疑似被盗取图取回,并与相应原图进行盲水印提取操作,若能够得到有效水印图即可证明资源归属。

    上传查重

    为解决部分用户使用其他用户资源重复上传相同信息的问题(如房产图、汽车图、商品图等),您可在用户上传图片资源前先进行全盲水印提取,若提取到水印图信息则证明该图片来自之前已有资源,并进行相应操作(如提醒用户请勿重复上传资源);若不存在全盲水印则添加全盲水印,保护图片资源不被其他用户下载后重复上传。

    资源防泄露

    对于内部分享的图片资源,您可通过文字盲水印将访问方的信息在请求图片时添加至图片中,当资源泄露后可通过流传出的资源图提取出盲水印,进而得到泄露方信息。

    添加盲水印

    请求一:上传时添加盲水印

    图片上传时添加盲水印的请求包与 PUT Object 接口一致,只需在请求包头部增加图片处理参数 Pic-Operations 并使用盲水印参数即可。

    请求示例

    PUT /<ObjectKey> HTTP/1.1
    Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
    Date: GMT Date
    Authorization: Auth String
    Pic-Operations: <PicOperations>
    
    [Object Content]
    说明:
    Authorization: Auth String(详情请参见 请求签名 文档)。
    通过子账号使用时,需要授予相关的权限,详情请参见 授权粒度详情 文档。

    请求头

    此接口使用公共请求头部,详情请参见 公共请求头部 文档。
    请求包头部增加图片处理参数 Pic-Operations,Pic-Operations 为 json 格式的字符串,具体参数如下:
    参数名称
    描述
    类型
    是否必选
    is_pic_info
    是否返回原图信息。0表示不返回原图信息,1表示返回原图信息,默认为0
    Int
    rules
    处理规则,一条规则对应一个处理结果(目前最多支持五条规则),不填则不进行图片处理
    Array
    rules(json 数组)中每一项具体参数如下:
    参数名称
    描述
    类型
    是否必选
    bucket
    存储结果的目标存储桶名称,格式为:BucketName-APPID,如果不指定的话默认保存到当前存储桶
    String
    fileid
    处理后文件的保存路径及名称。名称规则说明:
    例如源文件的路径及文件名为:/p1/test1.jpg
    1. 以/开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。
    2. 不以 / 开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在 p1 文件夹中新建了一个 p2 文件夹,然后在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。
    3. 注意:请不要以 / 结尾,否则会产生空文件名。
    String
    rule
    处理参数,可参见图片处理 API。 若按指定样式处理,则以 style/ 开头,后加样式名,如样式名为“test”,则 rule 字段为 style/test
    String
    使用盲水印需在 rule 中添加水印图参数(watermark),示例格式如下:
    watermark/3/type/<type>/image/<imageUrl>/text/<text>/level/<level>
    示例参数说明如下:
    参数名称
    描述
    类型
    是否必选
    type
    盲水印类型,有效值:1为半盲水印;2为全盲水印;3为文字盲水印
    Int
    image
    盲水印图片地址,需要经过 URL 安全的 Base64 编码。 当 type 为1或2时必填,type 为3时无效。 指定的水印图片必须同时满足如下条件:
    1. 盲水印图片与原图片必须位于同一个存储桶下;
    2. URL 必须以 http:// 开始,不能省略 http 头,也不能填 https 头,例如以下地址为非法水印地址:
    examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/watermark.png
    https://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/watermark.png
    String
    text
    盲水印文字,需要经过 URL 安全的 Base64 编码。当 type 为3时必填,type 为1或2时无效。
    String
    level
    只对全盲水印(type=2)有效。level 的取值范围为{1,2,3},默认值为1,level 值越大则图片受影响程度越大、盲水印效果越好。
    Int

    请求参数

    此接口无请求参数。

    请求体

    此接口请求的请求体为需要添加盲水印的原文件(图片)内容。

    响应

    响应头

    此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

    响应体

    响应体具体数据内容如下:
    参数名称
    描述
    类型
    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

    实际案例

    请求

    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 Content]

    响应

    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****
    
    <UploadResult>
    <OriginalInfo>
    <Key>exampleobject</Key>
    <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject</Location>
    <ImageInfo>
    <Format>JPEG</Format>
    <Width>640</Width>
    <Height>427</Height>
    <Quality>100</Quality>
    <Ave>0xa18454</Ave>
    <Orientation>1</Orientation>
    </ImageInfo>
    </OriginalInfo>
    <ProcessResults>
    <Object>
    <Key>exampleobject</Key>
    <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject</Location>
    <Format>png</Format>
    <Width>640</Width>
    <Height>427</Height>
    <Size>463092</Size>
    <Quality>100</Quality>
    </Object>
    </ProcessResults>
    </UploadResult>
    注意:
    请求体的 [Object Content] 字段为原图的图片内容(二进制字符串),请求头 Pic-Operations 的 rule 字段中,imageUrl 为水印图片的地址。
    响应体的 ProcessResults 中的 Location 字段为处理后已经携带盲水印的图片的地址。

    请求二:下载时添加盲水印

    图片下载时添加盲水印与添加普通水印操作相同,只需在图片访问链接后使用 watermark 参数即可。

    请求示例

    GET /<ObjectKey>?watermark/3/type/<type>/image/<imageUrl>/text/<text> HTTP/1.1
    Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
    Date: <GMT Date>
    Authorization: <Auth String>

    请求参数

    请求参数说明如下:
    参数
    描述
    类型
    是否必选
    ObjectKey
    对象文件名,例如 folder/sample.jpg。
    String
    type
    盲水印类型,有效值:1为半盲水印;2为全盲水印;3为文字盲水印
    Int
    image
    盲水印图片地址,需要经过 URL 安全的 Base64 编码。 当 type 为1或2时必填,type 为3时无效。 指定的水印图片必须同时满足如下条件:
    1. 盲水印图片与原图片必须位于同一个存储桶下;
    2. URL 必须以 http:// 开始,不能省略 http 头,也不能填 https 头,例如以下地址为非法水印地址:
    examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/watermark.png
    https://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/watermark.png
    String
    text
    盲水印文字,需要经过 URL 安全的 Base64 编码。 当 type 为3时必填,type 为1或2时无效。
    String
    level
    只对全盲水印(type=2)有效。level 的取值范围为{1,2,3},默认值为1,level 值越大则图片受影响程度越大、盲水印效果越好。
    Int

    实际案例

    https://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/sample.jpeg?watermark/3/type/3/text/dGVuY2VudCBjbG91ZA==

    请求三:对 COS 上的图片添加盲水印

    通过 API 能够对已存储在 COS 的图片进行添加盲水印的操作,并将结果存入到 COS。

    请求示例

    POST /<ObjectKey>?image_process HTTP/1.1
    Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
    Date: GMT Date
    Authorization: Auth String
    Pic-Operations: <PicOperations>
    说明:
    Authorization: Auth String(详情请参见 请求签名 文档)。
    通过子账号使用时,需要授予相关的权限,详情请参见 授权粒度详情 文档。

    请求头

    此接口使用公共请求头部,详情请参见 公共请求头部 文档。
    请求包头部增加图片处理参数 Pic-Operations,Pic-Operations 为 json 格式的字符串,具体参数如下:
    参数名称
    描述
    类型
    是否必选
    is_pic_info
    是否返回原图信息。0表示不返回原图信息,1表示返回原图信息,默认为0
    Int
    rules
    处理规则,一条规则对应一个处理结果(目前最多支持五条规则),不填则不进行图片处理
    Array
    rules(json 数组)中每一项具体参数如下:
    参数名称
    描述
    类型
    是否必选
    bucket
    存储结果的目标存储桶名称,格式为:BucketName-APPID,如果不指定的话默认保存到当前存储桶
    String
    fileid
    处理后文件的保存路径及名称。名称规则说明:
    例如源文件的路径及文件名为:/p1/test1.jpg
    1. 以/开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。
    2. 不以 / 开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在 p1 文件夹中新建了一个 p2 文件夹,然后在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。
    3. 注意:请不要以 / 结尾,否则会产生空文件名。
    String
    rule
    处理参数,可参见图片处理 API。 若按指定样式处理,则以 style/ 开头,后加样式名,如样式名为“test”,则 rule 字段为 style/test
    String
    使用盲水印需在 rule 中添加水印图参数(watermark),示例格式如下:
    watermark/3/type/<type>/image/<imageUrl>/text/<text>/level/<level>
    示例参数说明如下:
    参数
    描述
    类型
    是否必选
    type
    盲水印类型,有效值:1为半盲水印;2为全盲水印;3为文字盲水印
    Int
    image
    盲水印图片地址,需要经过 URL 安全的 Base64 编码。 当 type 为1或2时必填,type 为3时无效。 指定的水印图片必须同时满足如下条件:
    1. 盲水印图片与原图片必须位于同一个存储桶下;
    2. URL 必须以 http:// 开始,不能省略 http 头,也不能填 https 头,例如以下地址为非法水印地址:
    examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/watermark.png
    https://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/watermark.png
    String
    text
    盲水印文字,需要经过 URL 安全的 Base64 编码。当 type 为3时必填,type 为1或2时无效。
    String
    level
    只对全盲水印(type=2)有效。level 的取值范围为{1,2,3},默认值为1,level 值越大则图片受影响程度越大、盲水印效果越好。
    Int

    请求参数

    此接口无请求参数。

    请求体

    此接口无请求体。

    响应

    响应头

    此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

    响应体

    响应体具体数据内容如下:
    参数名称
    描述
    类型
    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

    实际案例

    请求

    POST /exampleobject?image_process 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

    响应

    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****
    
    <UploadResult>
    <OriginalInfo>
    <Key>exampleobject</Key>
    <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject</Location>
    <ImageInfo>
    <Format>JPEG</Format>
    <Width>640</Width>
    <Height>427</Height>
    <Quality>100</Quality>
    <Ave>0xa18454</Ave>
    <Orientation>1</Orientation>
    </ImageInfo>
    </OriginalInfo>
    <ProcessResults>
    <Object>
    <Key>exampleobject</Key>
    <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject</Location>
    <Format>png</Format>
    <Width>640</Width>
    <Height>427</Height>
    <Size>463092</Size>
    <Quality>100</Quality>
    </Object>
    </ProcessResults>
    </UploadResult>

    提取盲水印

    请求一:上传时提取盲水印

    请求示例

    上传图片并提取盲水印的请求包与 PUT Object 接口一致,只需在请求包头部增加图片处理参数 Pic-Operations 并使用提取盲水印参数(watermark/4)即可。
    PUT /<ObjectKey> HTTP/1.1
    Host: <BucketName-APPID>.cos.<Region>.myqcloud.com
    Date: GMT Date
    Authorization:XXXXXXXXXXXX
    Pic-Operations: <PicOperations>
    
    [Object Content]
    说明:
    Authorization: Auth String(详情请参见 请求签名 文档)。
    通过子账号使用时,需要授予相关的权限,详情请参见 授权粒度详情 文档。

    请求头

    此接口使用公共请求头部,详情请参见 公共请求头部 文档。
    请求包头部增加图片处理参数 Pic-Operations,Pic-Operations 为 json 格式的字符串,具体参数如下:
    参数名称
    描述
    类型
    是否必选
    is_pic_info
    是否返回原图信息。0表示不返回原图信息,1表示返回原图信息,默认为0
    Int
    rules
    处理规则,一条规则对应一个处理结果(目前最多支持五条规则),不填则不进行图片处理
    Array
    rules(json 数组)中每一项具体参数如下:
    参数名称
    描述
    类型
    是否必选
    bucket
    存储结果的目标存储桶名称,格式为:BucketName-APPID,如果不指定的话默认保存到当前存储桶
    String
    fileid
    处理后文件的保存路径及名称。名称规则说明:
    例如源文件的路径及文件名为:/p1/test1.jpg
    1. 以/开头为绝对路径,例如 fileid 值为 /p2/test2.jpg 时,表示在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。
    2. 不以 / 开头为相对路径,例如 fileid 值为 p2/test2.jpg 时,表示在 p1 文件夹中新建了一个 p2 文件夹,然后在 p2 文件夹中存储了一个文件名为 test2.jpg 的文件。
    3. 注意:请不要以 / 结尾,否则会产生空文件名。
    String
    rule
    处理参数,请参见图片处理 API。 若按指定样式处理,则以 style/ 开头,后加样式名,如样式名为“test”,则 rule 字段为 style/test
    String
    提取盲水印需在 rule 中添加水印图参数(watermark),示例格式如下:
    watermark/4/type/<type>/image/<imageUrl>
    示例参数说明如下:
    参数
    描述
    类型
    是否必选
    type
    盲水印类型,有效值:1为半盲水印;2为全盲水印;3为文字盲水印,必须跟添加盲水印时的 type 类型一致
    Int
    image
    图片地址,根据 type 值填写:
    当 type 为1,则 image 必填,且为原图图片地址。
    当 type 为2,则 image 必填,且为水印图地址。
    当 type 为3,则 image 无需填写(无效)。
    image 需要经过 URL 安全的 Base64 编码,指定的图片必须同时满足如下条件:
    1. 图片与存在水印的图片必须位于同一个对象存储桶下。
    2. URL 必须以 http:// 开始,不能省略 http 头,也不能填 https 头,例如以下地址为非法水印地址:
    examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/watermark.png
    https://examplebucket-1250000000.cos.ap-shanghai.myqcloud.com/watermark.png
    String

    请求参数

    此接口无请求参数。

    请求体

    此接口请求的请求体为图片内容。

    响应

    响应头

    此接口仅返回公共响应头部,详情请参见 公共响应头部 文档。

    响应体

    响应体的 UploadResult.ProcessResults.Object 字段中新增 WatermarkStatus 字段,当盲水印提取的请求体中 type 参数为2时携带 WatermarkStatus 参数,其他情况不返回该参数。
    参数
    父节点
    描述
    类型
    WatermarkStatus
    Object
    当 type 为2时返回该字段,表示提取到全盲水印的可信度。具体为0-100的数字,75分以上表示确定有盲水印,60-75表示疑似有盲水印,60以下可认为未提取到盲水印
    Int

    实际案例

    请求

    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/2/image/aHR0cDovL2V4YW1wbGVzLTEyNTEwMDAwMDQucGljc2gubXlxY2xvdWQuY29tL2ZpbGVuYW1lLmpwZWc="
    }]
    }
    Content-Length: 64
    
    [Object Content]

    响应

    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****
    
    <UploadResult>
    <OriginalInfo>
    <Key>exampleobject1</Key>
    <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject1</Location>
    <ImageInfo>
    <Format>JPEG</Format>
    <Width>640</Width>
    <Height>427</Height>
    <Quality>100</Quality>
    <Ave>0xa18454</Ave>
    <Orientation>1</Orientation>
    <FrameCount>1</FrameCount>
    </ImageInfo>
    </OriginalInfo>
    <ProcessResults>
    <Object>
    <Key>exampleobject2</Key>
    <Location>examplebucket-1250000000.cos.ap-chengdu.myqcloud.com/exampleobject2</Location>
    <Format>png</Format>
    <Width>640</Width>
    <Height>427</Height>
    <Size>463092</Size>
    <Quality>100</Quality>
    <FrameCount>1</FrameCount>
    <WatermarkStatus>86</WatermarkStatus>
    </Object>
    </ProcessResults>
    </UploadResult>
    注意:
    对于 type 值为1的请求,请求头 Pic-Operations 的 rule 字段中,imageUrl 为未添加盲水印的原图地址;对于 type 值为2的请求,包头 Pic-Operations 的 rule 字段中,imageUrl 为水印图的地址。
    响应体 ProcessResults 字段的 url 为提取出来的水印图地址。

    请求二:对 COS 上的图片提取盲水印

    对 COS 上的图片提取盲水印的请求包与 云上数据处理 接口一致,只需在请求包头部增加图片处理参数 Pic-Operations 并使用提取盲水印参数(watermark/4)即可。