當前位置: 首頁> 最新文章列表> 結合imagettftext() 添加透明文字

結合imagettftext() 添加透明文字

M66 2025-05-17

在使用PHP 進行圖片處理時,GD 庫提供了豐富的函數來實現各種效果。其中, imagettftext()可以用來在圖片上繪製TrueType 字體的文字,而imagecolorallocatealpha()則可以分配一個帶有透明度的顏色。當我們將這兩個函數結合使用時,就能在圖片上添加帶有透明效果的文字。

本文將通過一個示例,演示如何實現這一效果。

步驟1:創建畫布

首先,我們需要創建一個畫布。這裡使用imagecreatetruecolor()創建一張真彩色圖片:

 <?php
// 創建一張 400x200 的畫布
$width = 400;
$height = 200;
$image = imagecreatetruecolor($width, $height);

// 為背景分配白色
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);

步驟2:分配帶透明度的文字顏色

imagecolorallocatealpha()的第四個參數表示透明度,取值範圍0(完全不透明)到127(完全透明)。

 // 分配紅色,50% 透明度(約等於 alpha = 63)
$red_alpha = imagecolorallocatealpha($image, 255, 0, 0, 63);

步驟3:繪製文字

我們使用imagettftext()在畫布上繪製文字。你需要提供一個TTF 字體文件的路徑。

 // 字體文件路徑
$font_path = __DIR__ . '/arial.ttf';

// 在畫布上寫入文字
imagettftext(
    $image,        // 圖片資源
    30,           // 字體大小
    0,            // 角度
    50,           // X 坐標
    100,          // Y 坐標(基線位置)
    $red_alpha,   // 顏色(帶透明度)
    $font_path,   // 字體文件路徑
    'Hello, m66.net!' // 要寫入的文字
);

步驟4:輸出圖片

為了輸出帶透明度的PNG 圖片,需要設置透明色並輸出為PNG 格式。

 // 打開 alpha 通道混合
imagesavealpha($image, true);

// 設置輸出頭
header('Content-Type: image/png');

// 輸出圖片
imagepng($image);

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

小貼士

  • 確保服務器上安裝了GD 庫,並且php.ini中啟用了對TrueType 字體的支持。

  • imagecolorallocatealpha()的透明度值越接近127,效果越透明。

  • 使用imagepng()輸出時,可以更好地保留透明通道。