咱們常常能在圖片上看到一些水印,通常分爲圖片、文字或者是兩種一塊兒的結合。那爲何要加水印呢?目的是爲了防止別人盜圖、造假或者標註出處等,保護圖片原做者的著做權或是勞動成果。那麼給圖片加水印就很是有必要了。php
怎麼用PHP實現給圖片加水印呢?html
先來看看效果
web
使用GD庫來實現效果
圖像處理和 GD - 手冊
正所謂授人以魚不如授人以漁,光貼代碼不講實現過程的,都是耍流氓。因此下面我會寫功能的實現過程、過程所須要用到的函數。瀏覽器
內容基本都是乾貨,須要用到的時候能夠方便查閱資料
下面是php實現兩種水印方式的關鍵函數:函數
準備兩張圖片字體
在php中加載這兩張圖片,獲得一個圖像資源數據類型。
根據不一樣的圖片格式,使用對應函數spa
它們甚至能夠加載一張來自網上的圖片
讀取圖片寬高。.net
可能你會須要將水印圖進行縮小或放大(若是不須要,能夠跳過這一步)
等比例縮放3d
拷貝部分圖像並調整大小
imagecopyresized 拷貝部分圖像並調整大小code
參數說明(爲了方便理解,我對參數進行了語義化)
imagecopyresized(目標圖像資源, 原圖資源, 粘到目標圖像的起始水平座標, 粘到目標圖像的起始垂直座標, 拷貝原圖的起始水平座標, 拷貝原圖的起始垂直座標, 最終想要的寬度, 最終想要的高度, 原圖的寬度, 原圖的高度);
使用imagecopymerge
函數,拷貝水印圖併合併到原圖中。
簡單分析形參都有哪些(爲了方便理解,我對參數進行了語義化)
imagecopymerge(原圖資源, 水印圖資源, 水印水平座標, 水印垂直座標, 拷貝水印圖的起始水平座標, 拷貝水印圖的起始垂直座標, 要拷貝的寬度, 要拷貝的高度, 水印透明度);
輸出圖像
函數關鍵字image+圖片格式
更多查看官方手冊
...
若是要輸出到瀏覽器中,須要設置content-type頭部
釋放圖像資源
簡單分析形參都有哪些(爲了方便理解,我對參數進行了語義化)
imagettftext(圖像資源, 文字尺寸, 文字角度, 文字水平座標, 文字垂直座標, 文字顏色, 字體, 文本文字)
GD庫版本是1時,單位是像素(px),版本是2時,單位是點/磅(pt)
px,pt,em換算表
字符的左下角爲基本點
顏色索引,經過imagecolorallocate函數建立
字體的絕對路徑
其餘參考
若是這對你有幫助,或者能幫你節省一些時間,不如,點個贊吧~