imagettftext

(PHP 3, PHP 4, PHP 5)

imagettftext -- 用 TrueType 字型向圖像寫入文字

說明

array imagettftext ( resource image, float size, float angle, int x, int y, int color, string fontfile, string text )

image

圖像資源。見 imagecreatetruecolor()

size

字型大小。根據 GD 版本不同,應該以像素大小指定(GD1)或點大小(GD2)。

angle

角度製表示的角度,0 度為從左向右讀的文字。更高數值表示逆時針旋轉。例如 90 度表示從下向上讀的文字。

x

xy 所表示的坐標定義了第一個字元的基本點(大概是字元的左下角)。這和 imagestring() 不同,其 x,y 定義了第一個字元的左上角。例如 "top left" 為 0, 0。

y

Y 坐標。它設定了字型基線的位置,不是字元的最底端。

color

彩色索引。使用負的彩色索引值具有關閉防鋸齒的效果。見 imagecolorallocate()

fontfile

是想要使用的 TrueType 字型的路徑。

根據 PHP 所使用的 GD 庫的不同,fontfile 沒有以 / 開頭時則 .ttf 將被加到檔案名之後並且會在庫定義字型路徑中嘗試搜尋該檔案名。

當使用的 GD 庫版本低於 2.0.18 時,一個空格字元 而不是分號將被用來作為不同字型檔案的「路徑分隔設定」。不小心使用了此特性將會導致一條警示訊息:Warning: Could not find/open font。對受影響的版本來說唯一解決專案就是將字型搬移到不包括空格的路徑中去。

很多情況下字型都放在腳本的同一個目錄下。下面的小技巧可以減輕包括的問題。
<?php
// Set the enviroment variable for GD
putenv('GDFONTPATH=' realpath('.'));

// Name the font to be used (note the lack of the .ttf extension)
$font 'SomeFont';
?>

text

文字字串。

可以包括十進位數字化字元表示(形式為:&#8364;)來訪問字型中超過位置 127 的字元。UTF-8 編碼的字串可以直接傳遞。

若果字串中使用的某個字元不被字型支援,一個空心矩形將置換該字元。

imagettftext() 返回一個含有 8 個單元的陣列表示了文字外框的四個角,順序為坐下角,右下角,右上角,左上角。這些點是相對於文字的而和角度無關,因此「左上角」指的是以水平方向看文字時其左上角。

例子 1. imagettftext() 例子

本例中的腳本將建立一個白色的 400x30 像素 PNG 圖像,其中有黑色(帶灰色陰影)Arial 字型寫的「Testing...」。

<?php
// Set the content-type
header("Content-type: image/png");

// Create the image
$im imagecreatetruecolor(40030);

// Create some colors
$white imagecolorallocate($im255255255);
$grey imagecolorallocate($im128128128);
$black imagecolorallocate($im000);

// The text to draw
$text 'Testing...';
// Replace path by your own font path
$font 'arial.ttf';

// Add some shadow to the text
imagettftext($im2001121$grey$font$text);

// Add the text
imagettftext($im2001020$black$font$text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);
?>

本函數同時需要 GD 庫和 FreeType 庫。

參見 imagettfbbox()