1. 準(zhǔn)備工作

在開(kāi)始之前,確保你的PHP環(huán)境已經(jīng)正確安裝并配置GD庫(kù)。GD庫(kù)是PHP的一個(gè)擴(kuò)展,用于處理圖片。你可以通過(guò)phpinfo()函數(shù)檢查GD庫(kù)是否已啟用。

2. 添加文字水印

要在圖片上添加文字水印,首先需要選擇合適的字體、大小、顏色和位置。然后使用GD庫(kù)的函數(shù)將文字疊加到圖片上。下面是一個(gè)簡(jiǎn)單的示例:

<?php
// 創(chuàng)建畫(huà)布
$image = imagecreatefromjpeg('source.jpg');

// 設(shè)置文字顏色
$color = imagecolorallocate($image, 255, 255, 255);

// 添加文字水印
imagettftext($image, 20, 0, 10, 50, $color, 'arial.ttf', 'Your Watermark');

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

// 釋放內(nèi)存
imagedestroy($image);
?>

3. 添加圖片水印

除了文字水印,你也可以添加圖片水印。這通常用于添加公司logo或其他圖像。以下是一個(gè)示例:

<?php
// 創(chuàng)建畫(huà)布
$image = imagecreatefromjpeg('source.jpg');
$watermark = imagecreatefrompng('watermark.png');

// 疊加圖片水印
imagecopy($image, $watermark, 10, 10, 0, 0, imagesx($watermark), imagesy($watermark));

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

// 釋放內(nèi)存
imagedestroy($image);
imagedestroy($watermark);
?>

4. 自定義水印透明度

你可能希望調(diào)整水印的透明度,以使其更加隱約。在GD庫(kù)中,你可以使用imagesetalpha()函數(shù)來(lái)實(shí)現(xiàn)這一點(diǎn)。以下是一個(gè)示例:

<?php
// 創(chuàng)建畫(huà)布
$image = imagecreatefromjpeg('source.jpg');
$watermark = imagecreatefrompng('watermark.png');

// 設(shè)置水印透明度
imagealphablending($watermark, true);
imagesavealpha($watermark, true);

// 疊加圖片水印
imagecopy($image, $watermark, 10, 10, 0, 0, imagesx($watermark), imagesy($watermark));

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

// 釋放內(nèi)存
imagedestroy($image);
imagedestroy($watermark);
?>

5. 批量處理圖片

如果你需要批量處理多張圖片,可以將上述代碼封裝成函數(shù),并使用循環(huán)來(lái)處理每張圖片。

<?php
function addWatermark($source, $watermark, $output) {
    $image = imagecreatefromjpeg($source);
    $watermark = imagecreatefrompng($watermark);
    imagecopy($image, $watermark, 10, 10, 0, 0, imagesx($watermark), imagesy($watermark));
    imagejpeg($image, $output);
    imagedestroy($image);
    imagedestroy($watermark);
}

$sourceImages = ['image1.jpg', 'image2.jpg', 'image3.jpg'];
foreach ($sourceImages as $source) {
    addWatermark($source, 'watermark.png', 'output/'.$source);
}
?>

6. 安全性考慮

當(dāng)處理用戶上傳的圖片時(shí),務(wù)必考慮安全性。確保對(duì)上傳的圖片進(jìn)行嚴(yán)格的驗(yàn)證和過(guò)濾,以防止任意文件上傳漏洞。

7. 性能優(yōu)化

在處理大量圖片時(shí),要注意優(yōu)化代碼以提高性能。例如,可以使用緩存技術(shù)緩存已處理過(guò)的圖片,避免重復(fù)處理。

總結(jié)

通過(guò)本文的介紹,你應(yīng)該已經(jīng)了解了如何使用PHP實(shí)現(xiàn)圖片添加水印的方法。無(wú)論是文字水印還是圖片水印,都可以通過(guò)GD庫(kù)輕松實(shí)現(xiàn)。記得考慮安全性和性能優(yōu)化,以確保你的應(yīng)用程序穩(wěn)定可靠。