在使用PHP 進行圖片處理時,GD 庫提供了豐富的函數來實現各種效果。其中, imagettftext()可以用來在圖片上繪製TrueType 字體的文字,而imagecolorallocatealpha()則可以分配一個帶有透明度的顏色。當我們將這兩個函數結合使用時,就能在圖片上添加帶有透明效果的文字。
本文將通過一個示例,演示如何實現這一效果。
首先,我們需要創建一個畫布。這裡使用imagecreatetruecolor()創建一張真彩色圖片:
<?php
// 創建一張 400x200 的畫布
$width = 400;
$height = 200;
$image = imagecreatetruecolor($width, $height);
// 為背景分配白色
$white = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $white);
imagecolorallocatealpha()的第四個參數表示透明度,取值範圍0(完全不透明)到127(完全透明)。
// 分配紅色,50% 透明度(約等於 alpha = 63)
$red_alpha = imagecolorallocatealpha($image, 255, 0, 0, 63);
我們使用imagettftext()在畫布上繪製文字。你需要提供一個TTF 字體文件的路徑。
// 字體文件路徑
$font_path = __DIR__ . '/arial.ttf';
// 在畫布上寫入文字
imagettftext(
$image, // 圖片資源
30, // 字體大小
0, // 角度
50, // X 坐標
100, // Y 坐標(基線位置)
$red_alpha, // 顏色(帶透明度)
$font_path, // 字體文件路徑
'Hello, m66.net!' // 要寫入的文字
);
為了輸出帶透明度的PNG 圖片,需要設置透明色並輸出為PNG 格式。
// 打開 alpha 通道混合
imagesavealpha($image, true);
// 設置輸出頭
header('Content-Type: image/png');
// 輸出圖片
imagepng($image);
// 銷毀資源
imagedestroy($image);
?>
確保服務器上安裝了GD 庫,並且php.ini中啟用了對TrueType 字體的支持。
imagecolorallocatealpha()的透明度值越接近127,效果越透明。
使用imagepng()輸出時,可以更好地保留透明通道。