在網頁開發中,我們經常需要給圖片添加水印,比如在產品圖片上疊加商標、文字或透明圖層,以防止圖片被盜用或用於品牌標識。在PHP 中,GD 庫提供了豐富的圖像處理函數,而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 表示不透明。
接下來我們通過一個完整的示例,給一張圖片加上半透明文字水印。
假設我們有一張圖片: https://m66.net/images/sample.jpg 。
<?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 ,我們可以輕鬆為圖片分配帶透明度的顏色,實現各種透明效果。在結合imagettftext或imagefilledrectangle這些函數時,可以製作出專業的半透明水印,既美觀又實用。
下次需要保護你的圖片時,不妨試試用PHP 自己生成水印吧!如果你需要完整的代碼示例或更多水印技巧,可以留言,我會繼續分享更多深入的內容。