首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 圖片加水印實戰:imagecopy 實現圖片水印隨機位置疊加

     編輯:PHP 相關知識

PHP 圖片加水印實戰:imagecopy 圖片水印

版權保護的核心手段是給圖片添加水印。GD imagecopy() 可將水印圖片像素級拷貝到目標圖片指定座標。本文實現隨機位置水印,附完整代碼。

核心函數

function watermark($backgroundFile, $watermarkFile) {
    // 1. 獲取尺寸
    list($bgW, $bgH) = getimagesize($backgroundFile);
    list($wmW, $wmH) = getimagesize($watermarkFile);

    // 2. 隨機位置(確保水印完整在畫布內)
    $posX = rand(0, $bgW - $wmW);
    $posY = rand(0, $bgH - $wmH);

    // 3. 創建資源
    $bg = imagecreatefromjpeg($backgroundFile); // 假設背景為 JPEG
    $wm = imagecreatefromgif($watermarkFile);   // 假設水印為 GIF(支持透明)

    // 4. 疊加:imagecopy(dst, src, dst_x, dst_y, src_x, src_y, src_w, src_h)
    imagecopy($bg, $wm, $posX, $posY, 0, 0, $wmW, $wmH);

    // 5. 保存覆蓋
    imagejpeg($bg, $backgroundFile);
    imagedestroy($bg);
    imagedestroy($wm);
}

watermark("brophp.jpg", "logo.gif");

進階增強

  • 格式自適應:用 getimagesize() 獲取 MIME,動態選擇 imagecreatefromjpeg/png/gif 及輸出函數。
  • 透明度控制:imagecopymerge($bg, $wm, $x, $y, 0, 0, $wmW, $wmH, $opacity),$opacity 0-100。
  • 九宮格/平鋪:雙層循環計算座標多次 imagecopy。
  • 文字水印:imagettftext() 繪制 TTF 字體文字,支持旋轉、陰影。

性能提示

大流量場景下,避免實時處理。採用「上傳時異步生成帶水印版本 + CDN 緩存」架構,讀取時直接命中靜態文件。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved