PHP imagestring函數詳解
imagestring函數是PHP圖形庫中常用的函數之一,它可以在一個圖像上輸出字符串。該函數有豐富的參數設置,用起來非常方便,下面就詳細介紹一下使用方法。
基本格式
imagestring的基本格式如下:
bool imagestring ( resource $image , int $font , int $x , int $y , string $string , int $color )
其中,各參數的含義如下:
- $image:處理過的圖形資源,由imagecreate等生成
- $font:字體設置參數,1~5分別表示5個不同大小(從小到大),也可以使用TrueType字體參數,真正調用ttf字體
- $x:字符串左上角的x坐標
- $y:字符串左上角的y坐標
- $string:打印的字符串
- $color:字符串的顏色
例如,下面是一個簡單的應用:
<?php //創建一個寬度為200,高度為50的畫布 $im = imagecreate(200, 50); //定義背景顏色和字體顏色 $bg_color = imagecolorallocate($im, 255, 255, 255); $text_color = imagecolorallocate($im, 0, 0, 0); //在畫布上寫字 imagestring($im, 5, 30, 20, "Hello world", $text_color); //輸出結果 header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?>
上述代碼將在一張寬為200,高為50的白色畫布上輸出一句黑色文字“Hello world”。
字體設置
imagestring函數提供了5種字體大小可供選擇,分別是1~5。用戶可以根據圖像大小和設計需要進行選擇。
例如,我們可以選擇字體大小為4的字體進行輸出:
<?php //創建一個寬度為200,高度為50的畫布 $im = imagecreate(200, 50); //定義背景顏色和字體顏色 $bg_color = imagecolorallocate($im, 255, 255, 255); $text_color = imagecolorallocate($im, 0, 0, 0); //在畫布上寫字 imagestring($im, 4, 30, 20, "Hello world", $text_color); //輸出結果 header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?>
此時輸出的字體大小為最大尺寸的80%。
除了內建字體大小,我們還可以使用我們自己的字體文件,這個時候需要用到imagestringft函數。在使用imagestringft函數的時候,所有的參數和imagestring函數都一樣,只是多了一個參數是自己的字體文件。下面是一個例子:
<?php //創建一個寬度為200,高度為50的畫布 $im = imagecreate(200, 50); //定義背景顏色和字體顏色 $bg_color = imagecolorallocate($im, 255, 255, 255); $text_color = imagecolorallocate($im, 0, 0, 0); //自己的字體位置 $font = './arial.ttf'; //在畫布上寫字 imagettftext($im, 20, 10, 30, 40, $text_color, $font, "Hello world"); //輸出結果 header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?>
顏色設置
imagestring函數可以指定可用的顏色,例如顏色參數可以使用RGB格式,也可以使用預定義顏色。在前面的例子中,可以看到我們使用了RGB顏色來定義字體顏色和背景顏色。
我們也可以使用PHP自帶的顏色預定義項,下面是一個例子:
<?php //創建一個寬度為200,高度為50的畫布 $im = imagecreate(200, 50); //定義背景顏色和字體顏色 $bg_color = imagecolorallocate($im, 255, 255, 255); $text_color = imagecolorallocate($im, 0, 0, 0); //在畫布上寫字 imagestring($im, 5, 30, 20, "Hello world", IMG_COLOR_BLUE); //輸出結果 header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?>
上述代碼使用內建的藍色作為文字顏色。
還可以通過使用imagecolorallocatealpha函數來設置透明的顏色,可以實現透明的文字效果。例如:
<?php //創建一個有透明度的寬度為200,高度為50的畫布 $im = imagecreatetruecolor(200, 50); //定義背景顏色和字體顏色 $trans_color = imagecolorallocatealpha($im, 0, 0, 0, 127); $text_color = imagecolorallocate($im, 255, 255, 255); //將畫布涂上透明的顏色 imagefill($im, 0, 0, $trans_color); //在畫布上寫字 imagestring($im, 5, 30, 20, "Hello world", $text_color); //輸出結果 header("Content-type: image/png"); imagepng($im); imagedestroy($im); ?>
上述代碼將在一個有透明度的寬為200,高為50的畫布上輸出一句白色文字“Hello world”。
總結
imagestring函數的功能十分強大,用戶可以通過該函數在圖像上任意位置輸出字符串。函數的參數設置也十分靈活,對于字體大小和顏色等屬性的設定,都提供了很好的支持。無論是在開發網頁或其他應用程序時,imagestring函數都是一種十分實用的圖形函數。