阿里云oss对象存储:给图片添加(多行)文字图片水印
一、说明二、php代码三、加图片水印四、加多行文字水印1、说明2、图片效果 - 水印前3、图片效果 - 水印后一、说明拼接 阿里云 oss 的图片地址文档对象存储 OSS 图片处理对象存储 OSS 图片水印OSS图片处理6.0二、php代码public function test() {$url = !empty($_REQUEST['url']) ? $_REQUEST['url'] : 'jp
·
一、说明
拼接 阿里云 oss 的图片地址
文档
二、php代码
public function test() {
$url = !empty($_REQUEST['url']) ? $_REQUEST['url'] : 'jpg,png,gif,jpeg...结尾的 oss图片地址';
$url = self::textWatermark($url, "水印的具体内容 2322-01-12 01:41:21", 'fangzhengkaiti', 'FFFFFF', 18, 60, 20);
echo "<img src='{$url}' />";
die;
}
/**
* 给oss图片加上水印
对象存储 OSS 图片处理:https://help.aliyun.com/document_detail/47735.html
对象存储 OSS 图片水印:https://help.aliyun.com/document_detail/44957.html#watermark
OSS图片处理6.0 https://gosspublic.alicdn.com/image/index.html?spm=a2c4g.11186623.0.0.67904a9cM9TzLA
* @param $url 图片地址,如:https://img-test.***.com/051447.png
* @param $text 文字水印的文字内容,文字内容需进行Base64编码(Base64编码之前中文字符串的最大字节长度为64个字符。)
* @param string $type 文字水印的字体,字体名称需进行Base64编码。默认值:wqy-zenhei( 编码后的值为d3F5LXplbmhlaQ)
wqy-zenhei 文泉驿正黑 d3F5LXplbmhlaQ
wqy-microhei 文泉微米黑 d3F5LW1pY3JvaGVp
fangzhengshusong 方正书宋 ZmFuZ3poZW5nc2h1c29uZw
fangzhengkaiti 方正楷体 ZmFuZ3poZW5na2FpdGk
fangzhengheiti 方正黑体 ZmFuZ3poZW5naGVpdGk
fangzhengfangsong 方正仿宋 ZmFuZ3poZW5nZmFuZ3Nvbmc
droidsansfallback DroidSansFallback ZHJvaWRzYW5zZmFsbGJhY2s
* @param string $color 文字水印的文字颜色,参数值为RGB颜色值。RGB颜色值,例如:000000表示黑色,FFFFFF表示白色。 默认值:000000(黑色)
* @param int $size 文字水印的文字大小。(0,1000] 默认值:40 单位:px
* @param int $t 图片水印或水印文字的透明度。[0,100] 默认值:100, 表示透明度100%(不透明)。
* @param int $shadow 文字水印的阴影透明度。[0,100] 默认值:0,表示没有阴影。
* @param int $rotate 文字顺时针旋转角度。[0,360] 默认值:0,表示不旋转。
* @param int $fill 是否将文字水印铺满原图。0、1(1:表示将文字水印铺满原图。0(默认值):表示不将文字水印铺满全图。)
* @param string $p [1,100] 指定图片水印按照原图的比例进行缩放,取值为缩放的百分比。如设置参数值为10,如果原图为100×100, 则图片水印大小为10×10。当原图变成了200×200,则图片水印大小为20×20。
* @param string $g 水印在图片中的位置。
nw:左上
north:中上
ne:右上
west:左中
center:中部
east:右中
sw:左下
south:中下
se(默认值):右下
* @param int $x 指定水印的水平边距, 即距离图片边缘的水平距离。这个参数只有当水印位置是左上、左中、左下、右上、右中、右下才有意义。[0,4096] 默认值:10 单位:像素(px)
* @param int $y 指定水印的垂直边距,即距离图片边缘的垂直距离, 这个参数只有当水印位置是左上、中上、右上、左下、中下、右下才有意义。 [0,4096] 默认值:10 单位:px
* @param int $voffset 定水印的中线垂直偏移。当水印位置在左中、中部、右中时,可以指定水印位置根据中线往上或者往下偏移。[-1000,1000] 默认值:0 单位:px
* @return string 拼接好的 url 地址
*/
public function textWatermark($url, $text, $type = 'wqy-zenhei', $color = '000000', $size = 40, $t = 100, $shadow = 0, $rotate = 0, $fill = 0,
$p = '', $g = 'se', $x = 10, $y = 10, $voffset = 0) {
$textLength = strlen($text);
$maxLength = 64;
if ($textLength > $maxLength) {
Log::info("图片地址[{$url}],水印文字[{$text}]长度 {$textLength} > {$maxLength}");
}
$text = self::base64url_encode($text);
$url .= '?x-oss-process=image/watermark,text_' . $text;
if ($type != 'wqy-zenhei') {
$type = self::base64url_encode($type);
$url .= ',type_' . $type;
}
//定义字段对应的默认值数组
$conditionArray = [
['field' => 'color', 'default_value' => '000000'],
['field' => 'size', 'default_value' => 40],
['field' => 't', 'default_value' => 100],
['field' => 'shadow', 'default_value' => 0],
['field' => 'rotate', 'default_value' => 0],
['field' => 'fill', 'default_value' => 0],
['field' => 'p', 'default_value' => ''],
['field' => 'g', 'default_value' => 'se'],
['field' => 'x', 'default_value' => 10],
['field' => 'y', 'default_value' => 10],
['field' => 'voffset', 'default_value' => 0],
];
foreach ($conditionArray as $item) {
$field = $item['field'];
$fieldValue = $$field; //$$ 引用变量
if ($fieldValue != $item['default_value']) { //不是默认值,拼接参数
// $url .= ',color_' . $color;
$url .= ",{$field}_" . $fieldValue;
}
}
// echo $url; //输出看下,拼接结果
return $url;
}
/*
在添加水印操作中,文字水印的文字内容、文字颜色、文字字体、图片水印的水印图片名称等参数需要进行URL安全的Base64编码。编码步骤如下:
# 将内容编码成Base64。
# 将结果中的部分编码替换。
- 将结果中的加号(+)替换成短划线(-)。
- 将结果中的正斜线(/)替换成下划线(_)。
- 将结果中尾部的等号(=)省略。
*/
function base64url_encode($data) {
return rtrim(strtr(base64_encode($data), '+/', '-_'), '=');
}
三、加图片水印
- 方法和文字的差不多,把
text参数 改成image,image参数的说明如下:
| image | 是 | 用于指定作为图片水印Object的完整名称,Object名称需进行Base64编码。详情请参见水印编码。例如,作为图片水印的Object为Bucket内image目录下的panda.png,则需要编码的内容为image/panda.png,编码后的字符串为aW1hZ2UvcGFuZGEucG5n。 | Base64编码后的字符串。 |
四、加多行文字水印
1、说明
- 地址 + 参数:比如
http:test.***.com/20991201/1314521.png?x-oss-process=image/watermark,type_............ - 参数的值如下
?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,size_30,text_5rC05Y2w55qE5YW35L2T5YaF5a65MSAyMzIyLTAxLTEyIDAxOjQxOjIx,color_FFFFFF,shadow_50,t_100,g_se,x_10,y_10/watermark,type_d3F5LXplbmhlaQ,size_30,text_5rC05Y2w55qE5YW35L2T5YaF5a65MiDlpb3nmoQ,color_00FF00,shadow_50,t_100,g_se,x_100,y_100
2、图片效果 - 水印前

3、图片效果 - 水印后

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)