當前位置: 首頁> 最新文章列表> 與imagecreate() 配合實現基本文本圖像輸出

與imagecreate() 配合實現基本文本圖像輸出

M66 2025-05-31

在PHP中,GD庫提供了一整套處理圖像的函數,可以用來動態生成圖像文件。對於一些需要將文字以圖像方式輸出的場景,例如生成驗證碼、創建帶水印的圖片、生成簽名圖等, imagecreate()imagefontwidth()是兩個非常實用的函數。

本文將詳細介紹如何使用imagefontwidth()獲取字體寬度,並結合imagecreate()創建一個簡單的文本圖像輸出。

一、理解imagefontwidth() 函數

imagefontwidth()是PHP GD 庫中用於獲取某個字體寬度的函數,其定義如下:

 int imagefontwidth(int $font);
  • $font參數指定字體大小,只能是內置字體(1 到5)。

  • 返回值是該字體中每個字符的像素寬度。

例如, imagefontwidth(5)通常返回9,表示字體5 每個字符寬9 像素。

二、使用imagecreate() 創建圖像畫布

imagecreate()用於創建一個空白圖像資源,其基本語法如下:

 resource imagecreate(int $width, int $height);

參數分別是畫布的寬度和高度(單位:像素),返回的是一個圖像資源句柄,可用於後續繪圖。

三、將兩者結合,輸出文字圖像

下面是一個完整的示例,展示瞭如何根據輸入文本的長度動態創建圖像畫布,並使用imagestring()輸出文本。

 <?php
// 設置內容
$text = "歡迎訪問 m66.net!";
$font = 5;

// 計算圖像尺寸
$font_width = imagefontwidth($font);
$font_height = imagefontheight($font);
$width = $font_width * strlen($text);
$height = $font_height + 10;

// 創建畫布
$image = imagecreate($width, $height);

// 設置顏色
$white = imagecolorallocate($image, 255, 255, 255); // 背景白
$black = imagecolorallocate($image, 0, 0, 0);       // 字體黑

// 寫入字符串
imagestring($image, $font, 0, 5, $text, $black);

// 輸出圖像到瀏覽器
header("Content-Type: image/png");
imagepng($image);

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

運行以上代碼時,PHP會動態生成一個PNG圖像,在圖像上顯示“歡迎訪問m66.net!”這段文字。

四、擴展應用

雖然內置字體有限,但配合imagettftext()使用自定義TTF 字體,可以實現更精美的排版效果。不過在快速輸出測試文字或用於簡易圖像標記時, imagefontwidth()imagecreate()的組合仍然非常高效。

總結

通過本文的講解,我們學習瞭如何使用imagefontwidth()來獲取字符寬度,並用imagecreate()創建畫布,從而實現了一個基礎的文字圖像輸出程序。這個過程對初學者來說非常適合用來理解PHP圖像處理的基本原理,也為後續更複雜的圖像處理打下了基礎。