繪製普通文字
函數:imagestring()
imagestring ( resource $image , int $font, int $x, int $y, string $s, int $col) : bool
imagestring() 用col 顏色將字串s 畫到image 所代表的圖像的x, y 座標處(這是字串左上角座標,整個影像的左上角為0,0)。如果 font 是 1,2,3,4 或 5,則使用內建字型。
使用imagestring來繪製字體,有點事很簡單。但缺陷也非常明顯,字體大小只有1到5,不支援中文字元。
<?php /**绘制文字**/ $imgHandler = imagecreatetruecolor(100,100); // 绘制矩形并填充 $borderCol = imagecolorallocate($imgHandler, 23, 32, 200); imagefilledrectangle($imgHandler, 0, 0, 99, 99, $borderCol); // 绘制水平方向文字 $strColor = imagecolorallocate($imgHandler, mt_rand(0,100), mt_rand(0, 100), mt_rand(0, 100)); imagestring($imgHandler, 5,1, 45, 'hello world', $strColor); // 垂直方向文字 imagestringUp($imgHandler, 5,45, 99, 'hello world', $strColor); header("Content-Type:image/png"); imagepng($imgHandler); imagedestroy($imgHandler);
使用字體庫繪製文字
#使用imagestring來繪製文字,非常簡單。但有幾個缺陷。首先:它不能繪製中文,另外,使用imagestring繪製出的文字不會太大。
這裡我們使用imagettftext來繪製文字,imagettftext除了能設定字體大小外,還可以給字體設定傾斜角度。
使用前,我們需要找一些ttf格式的字型。在windows系統下的C:\Windows\Fonts目錄,有許多字型。
<?php /* 使用imagettftext向图像正中写文字 */ $im = imagecreatetruecolor(300, 300); $bgColor = imagecolorallocate($im, 222,222,222); imagefill($im,0, 0, $bgColor); $size = 30; $angle = 0; $font = 'D:\wwwroot\stdphp\img\font/msyhbd.ttf'; $text = '大圣到此一游'; //获取文字信息 $info = imagettfbbox($size, $angle, $font, $text); $minx = min($info[0], $info[2], $info[4], $info[6]); $maxx = max($info[0], $info[2], $info[4], $info[6]); $miny = min($info[1], $info[3], $info[5], $info[7]); $maxy = max($info[1], $info[3], $info[5], $info[7]); ///* 计算文字初始坐标和尺寸 */ $x = $minx; $y = abs($miny); $w = $maxx - $minx; $h = $maxy - $miny; /* 随机文字颜色 */ $textColor = imagecolorallocate($im, mt_rand(0,150), mt_rand(0,150), mt_rand(0,150)); imagettftext($im, $size, $angle, (300 - $w) / 2 + $x, (300 - $h) / 2 + $y, $textColor, $font, $text); header("Content-type:image/png"); imagepng($im); imagedestroy($im);
繪製的圖片效果如下:
以上是PHP圖片處理(中)- 繪製文字的詳細內容。更多資訊請關注PHP中文網其他相關文章!