當前位置: 首頁> 最新文章列表> 用PHP 實現半透明水印功能

用PHP 實現半透明水印功能

M66 2025-05-22

在網頁開發中,我們經常需要給圖片添加水印,比如在產品圖片上疊加商標、文字或透明圖層,以防止圖片被盜用或用於品牌標識。在PHP 中,GD 庫提供了豐富的圖像處理函數,而imagecolorallocatealpha就是實現透明顏色的關鍵之一。

本文將詳細講解如何使用imagecolorallocatealpha函數來給圖片添加一個半透明的文字水印。

什麼是imagecolorallocatealpha?

imagecolorallocatealpha是PHP GD 庫中的一個函數,它的作用是在圖片上分配一種顏色,並且可以指定其透明度(alpha 值)。其函數定義如下:

 int imagecolorallocatealpha ( resource $image , int $red , int $green , int $blue , int $alpha )

其中:

  • $image :目標圖像資源。

  • $red, $green, $blue :顏色的RGB 分量(0–255)。

  • $alpha :透明度,取值範圍0(完全不透明)到127(完全透明)。

注意:這與CSS 中的alpha 概念不同,CSS 的alpha 是0 表示透明,而這裡的0 表示不透明。

示例:為圖片添加半透明文字水印

接下來我們通過一個完整的示例,給一張圖片加上半透明文字水印。

1?? 準備一張圖片

假設我們有一張圖片: https://m66.net/images/sample.jpg

2?? 編寫PHP 代碼

<?php
// 加載原始圖片
$imagePath = 'https://m66.net/images/sample.jpg';
$image = imagecreatefromjpeg($imagePath);

// 設置字體文件(確保服務器上有這個文件)
$fontFile = './arial.ttf';  // 請用實際的 ttf 字體文件路徑

// 分配半透明的顏色(白色,透明度 50%)
$whiteAlpha = imagecolorallocatealpha($image, 255, 255, 255, 63); // alpha 63 ≈ 半透明

// 添加文字水印
$text = 'm66.net';
$fontSize = 20;
$x = 20;
$y = 50;
imagettftext($image, $fontSize, 0, $x, $y, $whiteAlpha, $fontFile, $text);

// 輸出圖像到瀏覽器
header('Content-Type: image/jpeg');
imagejpeg($image);

// 銷毀圖像資源
imagedestroy($image);
?>

代碼要點解析

?加載圖片<br> 我們使用imagecreatefromjpeg加載一張JPEG 圖片,你也可以根據需要用imagecreatefrompng或imagecreatefromgi f

?分配帶透明度的顏色
imagecolorallocatealpha($image, 255, 255, 255, 63)分配了一個白色半透明的顏色。 63是大約50% 透明度(127/2)。

?添加文字
imagettftext用於在圖片上繪製TrueType 字體的文字,需要提供字體文件路徑。

?輸出和銷毀<br> 我們通過header('Content-Type: image/jpeg')設置響應類型,然後用imagejpeg輸出圖片到瀏覽器最後要用imagedestroy釋放內存。

注意事項

  • GD 庫必須啟用:請確保你的PHP 環境中已安裝和啟用了GD 庫。

  • 字體文件路徑正確imagettftext需要一個字體文件(.ttf)。如果路徑錯誤,文字不會顯示。

  • 保存到文件:如果不想直接輸出到瀏覽器,可以用imagejpeg($image, 'output.jpg')保存到文件。

小結

通過imagecolorallocatealpha ,我們可以輕鬆為圖片分配帶透明度的顏色,實現各種透明效果。在結合imagettftextimagefilledrectangle這些函數時,可以製作出專業的半透明水印,既美觀又實用。

下次需要保護你的圖片時,不妨試試用PHP 自己生成水印吧!如果你需要完整的代碼示例或更多水印技巧,可以留言,我會繼續分享更多深入的內容。