概述
水印操作可以在图片上设置另外一张图片或者文字做为水印。
水印类型分成图片水印,文字水印,和文图混合水印。
说明下面只给出各个接口的示例,具体使用可以参考示例代码。
基本参数
图片水印,文字水印,和文图混合水印都可以使用如下参数。
名称 | 描述 | 是否必须 |
---|---|---|
t | 透明度, 如果是图片水印,就是让图片变得透明,如果是文字水印,就是让水印变透明。 整数形式,取值是[0, 100]。默认值是100,表示100%(不透明)。 |
否 |
p | 水印打在图的位置,位置如区域数值对应表所示。 整数形式,取值是[1, 9]。默认值是9,表示在右下角打水印 。 |
否 |
x | 水印距离图片边缘的水平距离,这个参数只有当水印位置是左上,左中,左下, 右上,右中,右下才有意义。 整数形式,取值是[0, 4096]。默认值是10 。单位是像素(px)。 |
否 |
y | 水印距离图片边缘的垂直距离, 这个参数只有当水印位置是左上,中上, 右上,左下,中下,右下才有意义。 整数形式,取值是[0, 4096]。默认值是10。单位是像素(px)。 |
否 |
voffset | 水印中线垂直偏移,当水印位置在左中,中部,右中时,可以指定水印位置根据中线往上或者往下偏移。 整数形式,取值是[-1000, 1000],默认值是0 。单位是像素(px)。 |
否 |
区域数值对应表
注意水平边距、垂直边距、中线垂直偏移可以调节不仅可以调节水印在图片中的位置,而且当图片存在多重水印时,也可以调节两张水印在图中的布局。
示例
- 右下角打上文字水印:/example.jpg@oosImage|watermark=2&type=d3F5LXplbmhlaQ&size=40&text=SGVsbG8g5Zu-54mH5pyN5YqhIQ
- 右下角打上文字水印,水平边距是 10,垂直边距20:/example.jpg@oosImage|watermark=2&type=d3F5LXplbmhlaQ&size=40&text=SGVsbG8g5Zu-54mH5pyN5YqhIQ&color=I0ZGRkZGRg&t=90&p=9&x=10&y=20
- 右中部分打上水印,水平边距为10, 垂直中线偏移为20,透明度为50:/example.jpg@oosImage|watermark=2&type=d3F5LXplbmhlaQ&size=40&text=SGVsbG8g5Zu-54mH5pyN5YqhIQ&color=I0ZGRkZGRg&t=50&p=6&x=10&voffset=20
图片水印
图片水印就是在原图的基础上加上一张水印图片。
访问类型
@oosImage|watermark=1&bucket=bucketName&object=<encodedobject>&t=<transparency>&x=<distanceX>&y=<distanceY>&p=<position>…
其中watermark与object两个参数为必填项。
参数
名称 | 描述 | 是否必须 |
---|---|---|
object | 水印图片的object名字(必须编码)。 内容必须是url 安全Base64编码 EncodedObject = url_safe_base64_encode(object) 如object为”panda.png”, 编码过后的内容就是 “cGFuZGEucG5n”。 |
是 |
bucket | 水印图片所在的bucket,必须是和要加图片水印的object是同一个用户,否则返回403 Access Denied。 | 是 |
水印预处理
水印图片支持预处理,目前支持的处理有调节亮度(b)和对比度(d),按比例缩略(p),指定宽度缩略(w,h) 这几个参数,其他参数暂未支持。
参数 | 描述 | 取值 |
---|---|---|
p | 对当前水印图片进行按比例缩略或放大。 | 整数形式,取值是[1, 1000]。例如10p表示基于水印图片的10%进行处理。 |
P | 水印图片按主图的比例进行处理。 | 整数形式,取值是[1, 100]。 如果设置了10P,主图是100*100, 那么水印图片此时的大小就是10*10, 当主图变成了200*200,那么水印图片就变成了20*20。 |
w | 按宽度缩略。指定水印图的宽度,高度按比较缩略。 | 整数形式,取值是[1, 4096]。单位是像素(px)。 |
h | 按高度缩略。指定水印图的高度, 宽度按比较缩略。 | 整数形式,取值是[1, 4096]。单位是像素(px)。 |
如果要指定对水印图片进行预处理,处理参数带在水印object之后,以@oosImage|连接。
如对panda.png 进行放大2倍: Object = url_safe_base64_encode(“panda.png@oosImage|200p”)。
所以尽量不要让原object名字是带@。不然可能会导致访问异常。如不要让原始object名字是”panda@123.png”。
示例
- 原图example.jpg 加上水印图片是panda.png,右下角,水平边距为10, 垂直边距为10, 透明度为90:/example.jpg@oosImage|watermark=1&bucket=bucketName&object=cGFuZGEucG5n&t=90&p=9&x=10&y=10
- 原图example.jpg 加上水印图片是panda.png。按宽度缩略成100, 水印大小是主图的40%, 此时水印图的是40*40:/example.jpg@oosImage|100w.jpg|watermark=1&bucket=bucketName&object=cGFuZGEucG5nQDQwUA&t=90&p=9&x=10&y=10
- 原图example.jpg 加上水印图片是panda.png。按宽度缩略成200,水印大小是主图的40%, 此时水印图是80*80:/example.jpg@oosImage|200w.jpg|watermark=1&bucket=bucketName&object=cGFuZGEucG5nQDQwUA&t=90&p=9&x=10&y=10
文字水印
文字水印就是在原图的基础上加上一段文字内容作为水印。
访问类型
@oosImage|watermark=2&text=<encodeText>&type=<encodeType>&size=<size>&color=<encode colr>&t=<t>&p=<p>&x=<x>&voffset=<offset>&y=<y>
其中watermark与object两个参数为必填项。
参数
名称 | 描述 | 是否必须 |
---|---|---|
text | 文字水印的文字内容 :EncodefontText = url_safe_base64_encode (fontText) 。最大长度为64个字符(即支持汉字最多20个左右)。 | 是 |
type | 文字水印的文字类型(必须编码)。 必须是Base64编码 EncodeFontType = url_safe_base64_encode (fontType)。 取值范围:“文字类型编码对应表”。默认值:wqy-zenhei ( 编码后的值:d3F5LXplbmhlaQ)。 |
否 |
color | 文字水印文字的颜色(必须编码)。 参数必须是Base64位编码 EncodeFontColor = url_safe_base64_encode(fontColor) 。 参数的构成必须是:# + 六个十六进制数。如:#000000表示黑色。 #是表示前缀,000000每两位构成RGB颜色, #FFFFFF表示的是白色默认值:#000000黑色 base64编码后值:IzAwMDAwMA |
否 |
size | 文字水印文字大小。 整数形式,取值是(0,1000] 。默认值是40。单位像素(px) |
否 |
s | 文字水印的阴影透明度。整数形式, 取值是(0,100]。 | 否 |
表:文字类型编码对应表
参数值 | 中文意思 | 编码后的值 |
---|---|---|
wqy-zenhei | 文泉驿正黑 | d3F5LXplbmhlaQ |
wqy-microhei | 文泉微米黑 | d3F5LW1pY3JvaGVp |
fangzhengshusong | 方正书宋 | ZmFuZ3poZW5nc2h1c29uZw |
fangzhengkaiti | 方正楷体 | ZmFuZ3poZW5na2FpdGk |
fangzhengheiti | 方正黑体 | ZmFuZ3poZW5naGVpdGk |
fangzhengfangsong | 方正仿宋 | ZmFuZ3poZW5nZmFuZ3Nvbmc |
droidsansfallback | DroidSansFallback | ZHJvaWRzYW5zZmFsbGJhY2s |
示例
- 字体是文泉驿正黑,字体大小是40, 颜色是白色(#FFFFFF), 文字阴影是50, 文字水印内容是“Hello 图片服务!”, 水印位置是右中,水平边距是10, 中线垂直偏移是20:/example.jpg@oosImage|watermark=2&type=d3F5LXplbmhlaQ&size=40&text=SGVsbG8g5Zu-54mH5pyN5YqhIQ&color=I0ZGRkZGRg&s=50&t=90&p=6&x=10&voffset=20。
- 最简单水印:文字内容是“Hello 图片服务!”:/example.jpg@oosImage|watermark=2&text=SGVsbG8g5Zu-54mH5pyN5YqhIQ。
图文混合水印
图文混合水印就是文字,图片并列一起做为水印打在图片上。
访问类型
@oosImage|watermark=3&bucket=bucketName&object=<encodeObject>&text=<encodeText>&type=<encodeType>&size=<size>&color=<encodecolor>&order=<order>&align=<align>&interval=<interval>&t=<t>&p=<p>&x=<x>&y=<y>
其中watermark与object两个参数为必填项。
参数
文图混合水印,相当于文字水印跟图片水印的混合,并行在一行输出。所以文图混合水印支持文字水印和图片水印的参数。其中object, text是必选参数。
名称 描述 是否必须 order 文字,图片水印前后顺序。
取值:
0 :图片在前。
1 :文字在前。
默认值是0。
否 align 取值:
0:表示上对齐。
1:表示中对齐。
2:表示下对齐。
默认值是0。
否 interval 文字和图片间的间距。
整数形式,取值是[0, 1000],单位是px。
否
示例
- 单纯文字水印,文字内容是“Hello 图片服务!”,阴影是50, 位置在右下角,水平边距和垂直边距都是10, 水印透明是90:/example.jpg@oosImage|watermark=2&text=SGVsbG8g5Zu-54mH5pyN5YqhIQ&s=50&t=90&p=9&x=10&y=10
- 单纯图片水印,图片object 是panda.png,位置在右下角,水平边距和垂直边距都是10, 水印透明是90:/example.jpg@oosImage|watermark=1&bucket=bucketName&object=cGFuZGEucG5n&t=90&p=9&x=10&y=10
- 文图混合水印,文字内容是“Hello 图片服务!”, 阴影是50, 位置在右下角,图片object 是panda.png。水平边距和垂直边距都是10, 水印透明是:90,排版方式是图片前,对齐方式是中对齐,间距是10:/example.jpg@oosImage|watermark=3&bucket=bucketName&object=cGFuZGEucG5n&type=d3F5LXplbmhlaQ&size=40&text=SGVsbG8g5Zu-54mH5pyN5YqhIQ&color=I0ZGRkZGRg&s=50&order=0&align=1&interval=10&t=90&p=9&x=10&y=10