一、需求。
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