用 TrueType 字型向影象寫入文字

imagettftext

(PHP 4, PHP 5, PHP 7, PHP 8)

imagettftext用 TrueType 字型向影象寫入文字

說明

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

使用 TrueType 字型將 指定的 text 寫入影象。

參數

image

由圖像建立函式(例如imagecreatetruecolor())返回的 GdImage 對象。

size

字型的尺寸,單位:點(磅)。

angle

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

x

xy 所表示的座標定義了第一個字元的基本點(大概是字元的左下角)。這和 imagestring() 不同,其 xy 定義了第一個字元的左上角。例如 "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

UTF-8 編碼的文字字串。

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

命名實體,比如 &copy; 是不支援的。可以考慮使用 html_entity_decode() 來解碼命名實體為 UTF-8 字元。 (自 PHP 5.0.0 開始 html_entity_decode() 開始支援)

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

返回值

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

更新日誌

版本 說明
5.2.0 It is now possible to specify an hexadecimal entity in text.

範例

示例 #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);
imagefilledrectangle($im0039929$white);

// 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);
?>

以上例程的輸出類似於:

例子輸出:imagettftext()

註釋

注意:

本函式同時需要 GD 庫和 » FreeType 庫。.

參見

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *