PHP 給圖片製做水印的方法

咱們常常能在圖片上看到一些水印,通常分爲圖片文字或者是兩種一塊兒的結合。那爲何要加水印呢?目的是爲了防止別人盜圖、造假或者標註出處等,保護圖片原做者的著做權或是勞動成果。那麼給圖片加水印就很是有必要了。php

怎麼用PHP實現給圖片加水印呢?html

先來看看效果
watermarkweb

使用GD庫

使用GD庫來實現效果
圖像處理和 GD - 手冊
正所謂授人以魚不如授人以漁,光貼代碼不講實現過程的,都是耍流氓。因此下面我會寫功能的實現過程、過程所須要用到的函數。瀏覽器

內容基本都是乾貨,須要用到的時候能夠方便查閱資料

關鍵函數

下面是php實現兩種水印方式的關鍵函數:函數

兩種水印的實現方式

圖片水印

準備兩張圖片字體

  • 原圖
  • 水印圖

實現過程

  1. 在php中加載這兩張圖片,獲得一個圖像資源數據類型。
    根據不一樣的圖片格式,使用對應函數spa

    它們甚至能夠加載一張來自網上的圖片
  2. 讀取圖片寬高。.net

  3. 可能你會須要將水印圖進行縮小或放大(若是不須要,能夠跳過這一步)
    等比例縮放3d

    1. 計算縮放比例,根據想要縮放到的值(好比一張寬度是500px的圖片,想縮小成50px)
    2. 計算縮放以後的寬高
    3. 建立一個新的圖像資源(新圖像的寬高等於縮放以後的寬高)
      imagecreatetruecolor 新建一個真彩色圖像
    4. 拷貝部分圖像並調整大小
      imagecopyresized 拷貝部分圖像並調整大小code

      參數說明(爲了方便理解,我對參數進行了語義化)
      imagecopyresized(目標圖像資源, 原圖資源, 粘到目標圖像的起始水平座標, 粘到目標圖像的起始垂直座標, 拷貝原圖的起始水平座標, 拷貝原圖的起始垂直座標, 最終想要的寬度, 最終想要的高度, 原圖的寬度, 原圖的高度);
  4. 使用imagecopymerge函數,拷貝水印圖併合併到原圖中。

    簡單分析形參都有哪些(爲了方便理解,我對參數進行了語義化)
    imagecopymerge(原圖資源, 水印圖資源, 水印水平座標, 水印垂直座標, 拷貝水印圖的起始水平座標, 拷貝水印圖的起始垂直座標, 要拷貝的寬度, 要拷貝的高度, 水印透明度);
    • 水印透明度:透明度範圍是0-100
  5. 輸出圖像
    函數關鍵字image+圖片格式 更多查看官方手冊

  6. 釋放圖像資源

文字水印

簡單分析形參都有哪些(爲了方便理解,我對參數進行了語義化)

imagettftext(圖像資源, 文字尺寸, 文字角度, 文字水平座標, 文字垂直座標, 文字顏色, 字體, 文本文字)
  • 文字尺寸

GD庫版本是1時,單位是像素(px),版本是2時,單位是點/磅(pt)
px,pt,em換算表

  • 文字水平垂直基點位置

字符的左下角爲基本點

  • 文字顏色

顏色索引,經過imagecolorallocate函數建立

  • 字體

字體的絕對路徑

其餘參考


若是這對你有幫助,或者能幫你節省一些時間,不如,點個贊吧~

原文地址

相關文章
相關標籤/搜索