欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

七牛 图片水印处理

至少应该两种方法 两种方法的代码均在本文件的附件中 七牛上传图片和视频加水印.zip
1)像视频那样 直接加  
2)在上传后的图片后加"?" 


图片水印处理

admin 更新时间:2017-04-27 17:59:30

七牛云存储提供三种水印接口:图片水印文字水印,以及一次请求中同时打多个水印

注意:watermark 接口支持的最大 gif 帧数为 200,超过 200,处理结果只返回原图。

 

图片水印

接口规格

注意:接口规格不含任何空格与换行符。


  1. watermark/1
  2. /image/<encodedImageURL>
  3. /dissolve/<dissolve>
  4. /gravity/<gravity>
  5. /dx/<distanceX>
  6. /dy/<distanceY>
  7. /ws/<watermarkScale>

 

参数名称必填说明
/image/<encodedImageURL>水印源图片网址(经过URL安全的Base64编码),必须有效且返回一张图片。
/dissolve/<dissolve> 透明度,取值范围1-100,默认值为100(完全不透明)。
/gravity/<gravity> 水印位置,参考水印锚点参数表,默认值为SouthEast(右下角)。
/dx/<distanceX> 横轴边距,单位:像素(px),默认值为10。
/dy/<distanceY> 纵轴边距,单位:像素(px),默认值为10。
/ws/<watermarkScale> 水印图片自适应原图的短边比例,取值范围0-1。

 

水印锚点参数表


  1. NorthWest | North | NorthEast
  2. | |
  3. | |
  4. --------------+----------------+--------------
  5. | |
  6. West | Center | East
  7. | |
  8. --------------+----------------+--------------
  9. | |
  10. | |
  11. SouthWest | South | SouthEast

 

请求报文

请求语法


  1. GET <imageDownloadURI>?<接口规格> HTTP/1.1
  2. Host: <imageDownloadHost>

头部信息

头部名称必填说明
Host下载服务器域名,可为七牛三级域名或自定义二级域名,参考七牛自定义域名绑定流程

 

响应报文

响应语法


  1. HTTP/1.1 200 OK
  2. Content-Type: <imageMimeType>
  3.  
  4. <imageBinaryData>
  5.  

头部信息

头部名称必填说明
Content-TypeMIME类型,成功时为图片的MIME类型,失败时为application/json
Cache-Control 缓存控制,失败时为no-store,不缓存。

响应内容

  • 如果请求成功,返回图片的二进制数据。

  • 如果请求失败,返回包含如下内容的 JSON 字符串 (已格式化,便于阅读):


  1. {
  2. "code": <HttpCode int>,
  3. "error": "<ErrMsg string>",
  4. }
字段名称必填说明
codeHTTP状态码,请参考响应状态
error与HTTP状态码对应的消息文本

响应状态码

HTTP状态码含义
200添加水印成功
400请求报文格式错误
404资源不存在
599服务端操作失败。

如遇此错误,请将完整错误信息(包括所有HTTP响应头部)通过邮件发送错误日志)给我们。

 

使用示例

  • 水印图片: https://olhvkds73.qnssl.com/logo.png
    • ImageURL = "https://olhvkds73.qnssl.com/logo.png"
    • encodedImageURL = urlsafe_base64_encode(ImageURL)
  • 水印透明度: 50% (dissolve=50)
  • 水印位置: 右下角 (gravity=SouthEast)
  • 横向边距: 20px
  • 纵向边距: 20px

图片水印

图片链接的URL:https://olhvkds73.qnssl.com/gogopher.jpg?watermark/1/image/aHR0cHM6Ly9vbGh2a2RzNzMucW5zc2wuY29tL2xvZ28ucG5n/dissolve/50/gravity/SouthEast/dx/20/dy/20

 

文字水印

接口规格

注意:接口规格不含任何空格与换行符。


  1. watermark/2
  2. /text/<encodedText>
  3. /font/<encodedFontName>
  4. /fontsize/<fontSize>
  5. /fill/<encodedTextColor>
  6. /dissolve/<dissolve>
  7. /gravity/<gravity>
  8. /dx/<distanceX>
  9. /dy/<distanceY>

 

参数名称必填说明
/text/<encodedText>水印文字内容(经过URL安全的Base64编码
/font/<encodedFontName> 水印文字字体(经过URL安全的Base64编码),默认为黑体,详见支持字体列表
注意:中文水印必须指定中文字体。
/fontsize/<fontSize> 水印文字大小,单位: 缇 ,等于1/20磅,默认值是240缇,参考DPI为72。
/fill/<encodedTextColor> 水印文字颜色,RGB格式,可以是颜色名称(例如 red)或十六进制(例如 #FF0000),参考RGB颜色编码表,默认为黑色。经过URL安全的Base64编码。
/dissolve/<dissolve> 透明度,取值范围1-100,默认值100(完全不透明)。
/gravity/<gravity> 水印位置,参考水印位置参数表,默认值为SouthEast(右下角)。
/dx/<distanceX> 横轴边距,单位:像素(px),默认值为10。
/dy/<distanceY> 纵轴边距,单位:像素(px),默认值为10。

请求报文

请求语法


  1. GET <imageDownloadURI>?<接口规格> HTTP/1.1
  2. Host: <imageDownloadHost>

头部信息

头部名称必填说明
Host下载服务器域名,可为七牛三级域名或自定义二级域名,参考七牛自定义域名绑定流程

响应报文

响应语法


  1. HTTP/1.1 200 OK
  2. Content-Type: <imageMimeType>
  3.  
  4. <imageBinaryData>
  5.  

头部信息

头部名称必填说明
Content-TypeMIME类型,成功时为图片的MIME类型,失败时为application/json
Cache-Control 缓存控制,失败时为no-store,不缓存。

响应内容

  • 如果请求成功,返回图片的二进制数据。

  • 如果请求失败,返回包含如右内容的JSON字符串(已格式化,便于阅读):


  1. {
  2. "code": <httpCode int>,
  3. "error": "<errMsg string>",
  4. }
字段名称必填说明
codeHTTP状态码,请参考响应状态
error与HTTP状态码对应的消息文本

响应状态码

HTTP状态码含义
200添加水印成功
400请求报文格式错误
404资源不存在
599服务端操作失败。

如遇此错误,请将完整错误信息(包括所有HTTP响应头部)通过邮件发送错误日志给我们。

 

界面操作方式

通过调试命令参数的方式,对使用者并不方便。我们提供了图片处理的图形化编辑界面,通过以下方式进入:

1、 登录 七牛控制台,并点击打开 图片处理

图片处理入口

2、 选择常用场景,并开始编辑图片处理命令

图片处理编辑

使用示例

  • 水印文本:七牛云存储
  • 水印文本字体:宋体
  • 水印文本字体大小:1000
  • 水印文本颜色:white
  • 水印文本透明度:15% (dissolve=85)
  • 水印文本位置:右下角 (gravity=SouthEast)

文字水印

图片链接的URL:https://olhvkds73.qnssl.com/gogopher.jpg?watermark/2/text/5LiD54mb5LqR5a2Y5YKo/font/5a6L5L2T/fontsize/1000/fill/I0ZGRkZGRg==/dissolve/85/gravity/SouthEast/dx/20/dy/20

 

同时打多个水印

本接口用于同时在一个原图上打多个不同类型的水印。

 

接口规格

注意1:接口规格不含任何空格与换行符。
注意2:省略号表示可以附加多个规格参数。
注意3:图片水印与文字水印的规格可以混写,按给定顺序处理。 


  1. watermark/3
  2. /text/<textWaterMarkParams1>
  3. /image/<imageWaterMarkParams1>
  4. /image/<imageWaterMarkParams2>
  5. /text/<textWaterMarkParams2>
  6. ...
参数名称必填说明
/image/<imageWaterMarkParams> 参考图片水印参数
/text/<textWaterMarkParams> 参考文字水印参数

 

请求报文

请求语法


  1. GET <imageDownloadURI>?<接口规格> HTTP/1.1
  2. Host: <imageDownloadHost>

请求头部

头部名称必填说明
Host下载服务器域名,可为七牛三级域名或自定义二级域名,参考七牛自定义域名绑定流程

 

响应报文

响应语法


  1. HTTP/1.1 200 OK
  2. Content-Type: <imageMimeType>
  3.  
  4. <imageBinaryData>
  5.  

头部信息

头部名称必填说明
Content-TypeMIME类型,成功时为图片的MIME类型,失败时为application/json
Cache-Control 缓存控制,失败时为no-store,不缓存。

响应内容

  • 如果请求成功,返回图片的二进制数据。

  • 如果请求失败,返回包含如下内容的JSON字符串(已格式化,便于阅读):


  1. {
  2. "code": <httpCode int>,
  3. "error": "<errMsg string>",
  4. }
字段名称必填说明
codeHTTP状态码,请参考响应状态
error与HTTP状态码对应的消息文本

响应状态码

HTTP状态码含义
200添加水印成功
400请求报文格式错误
404资源不存在
599服务端操作失败。

如遇此错误,请将完整错误信息(包括所有HTTP响应头部)通过邮件发送给我们。

注意:

  • watermark生成的图片会被七牛云存储缓存以加速下载,但不会持久化。需要持久化的缩略图,请参考持久化数据处理saveas
  • 使用qrsctl工具,给图片下载URL中的水印规格添加别名,使得URL更加友好。

  1. qrsctl login <email> <password>
  2.  
  3. qrsctl style <bucket> watermarked.jpg watermark/2/text/<encodedText>
  4.  
  5. qrsctl separator <bucket> -

此时,如下两个URL等价:


  1. http://<Domain>/<Key>?watermark/2/text/<encodedText>
  2.  
  3. http://<Domain>/<Key>-watermarked.jpg
  • 设置原图保护,仅限使用缩略图样式别名的友好URL形式来访问目标图片。

设置原图保护后,原图不能访问:


  1. http://<Domain>/<Key>

同时也禁止根据图像处理API对原图进行参数枚举:


  1. http://<Domain>/<Key>?watermark/2/text/<encodedText>

此时只能访问指定规格的图片资源:


  1. http://<Domain>/<Key>-watermarked.jpg
以上内容是否对您有帮助? 
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

普通分类: