使用阿里云OSS给图片添加水印
一、需求。
1.1、Laravel下给图片添加水印;
二、分析。
2.1、给图片添加水印,一个是可以用PHP的GD库处理,Laravel下可以直接通过Composer安装别人写好的处理扩展实现。
composer require intervention/image
2.2、第二种推荐使用阿里云对象存储OSS实现。下面简单记录下Laravel6.0下使用OSS实现给图片添加水印。
------------------------------------------沉默的分割线---------------------------------------------------------
三、Laravel6.0使用阿里云对象存储OSS具体步骤。
第一步:通过Composer安装对象存储的PHP SDK:https://help.aliyun.com/document_detail/85580.html
composer require aliyuncs/oss-sdk-php
第二步:安装完扩展后,修改Laravel的文件存储磁盘为OSS,在config/filesystems.php中添加oss配置参数,如下参数具体值可以从自己的注册阿里云oss上获取:https://help.aliyun.com/document_detail/31827.html
'oss' => [ 'driver' => 'oss',//存储方式oss 'access_id' => env('阿里云oss账户'), 'access_key' => env('阿里云oss密钥'), 'bucket' => env('你的桐名'), 'endpoint' => env('你的端点名'), 'url' => env('你的域名'), 'ssl' => env('是否开启ssl'), ],
第三步:如上安装后,使用Laravel上传图片,如果接口报 Driver [oss] is not supported,可安装如下扩展解决。
composer require "jacobcyl/ali-oss-storage: dev-master"
第四步:创建测试上传接口,开始测试图片上传,代码如下。
public function updateOSS(Request $request) { $file = $request->file(); //图片验证 $imgKeyArr = array_keys($file); try { $savename = Storage::putFile('watermark', $request->file($imgKeyArr[0])); } catch (\Exception $e) { dd($e->getMessage());//上传出错 } //拼接域名前缀 $url = env('OSS_URL'); $fileUrl = $url . '/' . $savename; dd($fileUrl); }
第五步:通过Postman请求上传接口,结果如下。
第六步:访问图片地址。
第七步:给图片加文字水印,效果如下。
:该图片效果的url
重点:效果实现说明:
3.1、如果直接添加文字水印,直接将文字进行base64编码后,添加相应参数,然后加到图片url后面既可。
3.2、如果是给图片添加图片水印,先将该水印上传到OSS上,然后将返回的水印图片地址base64编码后,添加相应参数,然后加到图片url后面既可。
3.3、如果是对图片进行缩放/放大处理,直接在图片url后添加相应参数既可。
具体参数说明参考 阿里云的文档,写的很详细:https://help.aliyun.com/document_detail/44957.html
-----END
影子是一个会撒谎的精灵,它在虚空中流浪和等待被发现之间;在存在与不存在之间....