Linux系統的開放性和可定制化程度很高,很受許多企業和個人的歡迎,因此很多網站都運行在Linux下面。為了讓網站更加美觀和易讀,我們通常需要使用Freetype庫來操作字體,而PHP作為一種流行的服務器端腳本語言,與Freetype的結合都是相對常見的需求。
通常我們可以通過PHP GD庫來實現圖片生成和處理,其中就包含了Freetype的相關操作函數。比如我們要用Helvetica字體生成一張紅底白字的圖片,可以使用下面的PHP代碼:
<?php $image = imagecreatetruecolor(200, 50); //新建一個200*50的真彩色圖片 $bg = imagecolorallocate($image, 255, 0, 0);//設置背景顏色為紅色 $font_color = imagecolorallocate($image, 255, 255, 255);//設置字體顏色為白色 imagettftext($image, 20, 0, 10, 35, $font_color, "/usr/share/fonts/truetype/freefont/FreeSans.ttf", "Hello World");//添加Hello World字樣,字體為FreeSans.ttf,大小為20,位置為10,35 header('Content-type: image/png');//設置圖片類型 imagepng($image);//輸出圖片 imagedestroy($image);//銷毀圖片資源 ?>
上面的例子中,我們使用了系統已經安裝的一種字體,如果我們沒有需要的字體,可以通過以下步驟來添加字體:
1. 下載需要的字體文件,可以從Freetype官網下載或在網上搜索。
2. 將字體文件拷貝到Linux系統的字體目錄下,通常是/usr/share/fonts/truetype/。
3. 更新字體緩存,執行命令fc-cache -fv。
接下來我們再來看一下使用Freetype庫生成某些復雜的文本圖片的示例。比如我們要生成一個帶陰影和描邊的文本圖片,可以使用下面的PHP代碼。
<?php function textWithShadow($text, $width, $height, $font, $size, $color, $shadowColor) { $im = imagecreatetruecolor($width, $height);//新建一個真彩色圖片 $bg = imagecolorallocatealpha($im, 255, 255, 255, 0);//設置背景為透明 imagefill($im, 0, 0, $bg);//用背景填充圖片 $shadow = imagecolorallocate($im, $shadowColor[0], $shadowColor[1], $shadowColor[2]);//生成陰影顏色 for($x=-1;$x<2;$x++) {//先繪制陰影 for($y=-1;$y<2;$y++) { imagettftext($im, $size, 0, $x, $y+$height/2, $shadow, $font, $text);//每次將文本偏移一個像素 } } imagettftext($im, $size, 0, 0, $height/2, $color, $font, $text);//最后再繪制正常的文字 header('Content-type: image/png');//輸出圖片 imagepng($im); imagedestroy($im);//銷毀圖片資源 } textWithShadow("Hello World", 200, 50, "/usr/share/fonts/truetype/freefont/FreeSans.ttf", 20, imagecolorallocate($im, 255, 255, 255), array(128,128,128));//測試一下 ?>
上面的例子中,我們生成了一個帶陰影和描邊的文本圖片,這個圖片看起來很棒。具體來說,我們首先新建一個真彩色的透明圖片。然后繪制多個偏移一像素的文本,最后再用描邊和正常顏色繪制正常的文本。
總的來說,Linux、PHP和Freetype庫的結合非常強大靈活,可以實現用字體生成各種各樣的文本圖片。