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

PHP GD 庫實現圖片水印疊加(透明 PNG 覆蓋 JPEG)

     編輯:PHP 綜合知識

核心代碼

<?php
// 載入底圖 (JPEG) 和水印圖 (PNG,支持透明通道)
$im = imagecreatefromjpeg("liu.jpg");
$img2 = imagecreatefrompng("m.png");

// 獲取尺寸
$im_WH = getimagesize("liu.jpg");
$im_W = $im_WH[0];
$im_H = $im_WH[1];

$img2_WH = getimagesize("m.png");
$img2_W = $img2_WH[0];
$img2_H = $img2_WH[1];

// 計算右下角坐標
$NewX = $im_W - $img2_W;
$NewY = $im_H - $img2_H;

// 疊加:將水印圖複製到底圖上
imagecopy($im, $img2, $NewX, $NewY, 0, 0, $img2_W, $img2_H);

// 輸出圖片
header("Content-type: image/jpeg");
imagejpeg($im);

// 釋放資源
imagedestroy($im);
imagedestroy($img2);
?>

關鍵函數說明

函數作用
imagecreatefromjpeg/png/gif從文件創建圖片資源,支持對應格式
getimagesize獲取圖片寬高及類型信息
imagecopy將源圖片的一部分複製到目標圖片指定坐標
imagejpeg/png/gif輸出圖片到瀏覽器或文件
imagedestroy銷毀圖片資源,釋放內存

進階:支持透明度合成

若需控制水印透明度,請使用 imagecopymerge() 替代 imagecopy():

// 最後一個參數 50 表示 50% 透明度
imagecopymerge($im, $img2, $NewX, $NewY, 0, 0, $img2_W, $img2_H, 50);

應用場景

  • 版權保護:批量為圖片添加 Logo 水印
  • 圖片標註:在圖片角落添加「樣圖」、「內部使用」等標識
  • 動態合成:用戶上傳頭像自動合成相框、裝飾貼紙

注意事項

  1. 底圖為 JPEG 時輸出 JPEG 會損失質量,建議輸出 PNG 保留質量(但文件較大)。
  2. 水印圖必須為 PNG 以支持透明背景;若為 GIF 亦可但色彩有限。
  3. 生產環境建議添加錯誤處理(文件是否存在、GD 擴展是否加載)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved