當前位置: 首頁> 最新文章列表> 如何使用PHP 的imagecreatefromgd2() 函數實現圖像水印添加功能?

如何使用PHP 的imagecreatefromgd2() 函數實現圖像水印添加功能?

M66 2025-05-17

在PHP中,圖像處理功能可以通過GD庫提供的多個函數實現。 imagecreatefromgd2() 是GD庫中用於加載.gd2 格式圖像的函數。在這篇文章中,我們將介紹如何利用imagecreatefromgd2() 函數為圖像添加水印效果。我們還會展示如何使用PHP 的GD 函數進行圖像操作,製作一個簡單的水印效果。

一、環境準備

在開始之前,確保你的PHP環境已啟用GD 庫。如果你使用的是Linux,可以通過以下命令安裝:

 sudo apt-get install php-gd

安裝完成後,重啟你的PHP服務器即可。

二、代碼實現

1. 加載圖像

首先,我們需要使用imagecreatefromgd2() 函數加載原始的.gd2 圖像文件。該函數會返回一個圖像資源,接下來可以對圖像進行操作。

 <?php
// 加載原始圖像
$original_image = imagecreatefromgd2('original_image.gd2');

// 檢查圖像是否加載成功
if (!$original_image) {
    die("圖像加載失敗!");
}
?>

2. 加載水印圖像

接下來,我們加載一張作為水印的圖像。這可以是任何格式的圖像,如PNG、JPEG 等。假設我們有一張PNG 格式的水印圖片。

 <?php
// 加載水印圖像
$watermark = imagecreatefrompng('watermark.png');

// 檢查水印圖像是否加載成功
if (!$watermark) {
    die("水印加載失敗!");
}
?>

3. 設置水印透明度

為了使水印不至於過於突兀,我們可以設置水印的透明度。可以使用imagecolorallocatealpha()來創建一個具有透明度的顏色。 GD庫中的圖像處理通常使用顏色的“透明度”值來控制透明度。

 <?php
// 設置透明度
imagealphablending($watermark, true);
imagesavealpha($watermark, true);
?>

4. 計算水印位置

為了將水印合適地添加到原始圖像上,我們需要計算水印圖像的位置。一般來說,我們可以將水印放置在圖像的右下角,但你可以根據需求調整位置。

 <?php
// 獲取原始圖像和水印圖像的尺寸
$original_width = imagesx($original_image);
$original_height = imagesy($original_image);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);

// 計算水印放置的坐標(右下角)
$x = $original_width - $watermark_width - 10;
$y = $original_height - $watermark_height - 10;
?>

5. 合成水印

通過imagecopy()函數,我們可以將水印圖像合成到原始圖像上。函數imagecopy()可以將源圖像複製到目標圖像的指定位置。

 <?php
// 合成水印到原始圖像
imagecopy($original_image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height);
?>

6. 輸出圖像

最後,我們需要輸出合成後的圖像。可以選擇輸出為任意格式的圖像(如PNG 或JPEG)。以下是輸出為PNG 格式的代碼:

 <?php
// 輸出最終圖像
header('Content-Type: image/png');
imagepng($original_image);

// 銷毀圖像資源,釋放內存
imagedestroy($original_image);
imagedestroy($watermark);
?>

7. 完整代碼示例

<?php
// 加載原始圖像
$original_image = imagecreatefromgd2('original_image.gd2');
if (!$original_image) {
    die("圖像加載失敗!");
}

// 加載水印圖像
$watermark = imagecreatefrompng('watermark.png');
if (!$watermark) {
    die("水印加載失敗!");
}

// 設置透明度
imagealphablending($watermark, true);
imagesavealpha($watermark, true);

// 獲取原始圖像和水印圖像的尺寸
$original_width = imagesx($original_image);
$original_height = imagesy($original_image);
$watermark_width = imagesx($watermark);
$watermark_height = imagesy($watermark);

// 計算水印放置的坐標(右下角)
$x = $original_width - $watermark_width - 10;
$y = $original_height - $watermark_height - 10;

// 合成水印到原始圖像
imagecopy($original_image, $watermark, $x, $y, 0, 0, $watermark_width, $watermark_height);

// 輸出最終圖像
header('Content-Type: image/png');
imagepng($original_image);

// 銷毀圖像資源,釋放內存
imagedestroy($original_image);
imagedestroy($watermark);
?>

三、總結

通過使用imagecreatefromgd2()函數,我們能夠輕鬆加載.gd2 格式的圖像,並利用PHP 的GD 庫為圖像添加水印。您可以根據自己的需要調整水印的透明度、位置以及圖像的輸出格式。如果您需要處理其他格式的圖像,只需替換相應的圖像加載函數(如imagecreatefrompng()imagecreatefromjpeg() )。

通過這種方式,您可以輕鬆實現圖像的水印功能,以保護您的圖片版權或添加個性化的元素。