Làm như thế này. Hãy nhớ đặt file font "arial.ttf" trong thư mục hiện hành:
<?php
// Create a 650x150 image and create two colors
$im = imagecreatetruecolor(650, 150);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
// Set the background to be white
imagefilledrectangle($im, 0, 0, 649, 149, $white);
// Path to our font file
$font = './arial.ttf';
//test it out
for($i=2;$i<10;$i++)
WriteTextForMe($im, $font, str_repeat($i, $i), -140 + ($i*80), 70 + rand(-30, 30), -160 + (($i+1)*80), 150, $black);
//this function does the magic
function WriteTextForMe($im, $font, $text, $x1, $y1, $x2, $y2, $allocatedcolor)
{
//draw bars
imagesetthickness($im, 2);
imagerectangle($im, $x1, $y1, $x2, $y2, imagecolorallocate($im, 100,100,100));
//draw text with dynamic stretching
$maxwidth = $x2 - $x1;
for($size = 1; true; $size+=1)
{
$bbox = imagettfbbox($size, 0, $font, $text);
$width = $bbox[2] - $bbox[0];
if($width - $maxwidth > 0)
{
$drawsize = $size - 1;
$drawX = $x1 + $lastdifference/2;
break;
}
$lastdifference = $maxwidth - $width;
}
$size--;
imagettftext($im, $drawsize, 0, $drawX, $y1 - 2, $allocatedcolor, $font, $text);
}
// Output to browser
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
Nó sử dụng imagettfbbox
chức năng để có được chiều rộng của văn bản, sau đó vòng qua kích thước phông chữ để có được kích thước chính xác, trung tâm nó và hiển thị nó.
Vì vậy, nó kết quả đầu ra như sau:

Boy, bạn đang ở cho một số công việc! Liệu nó * có * là PHP? Có những thư viện vẽ biểu đồ javascript tuyệt vời (và sẵn sàng) ở đó ... –
Tôi đang tạo một thư viện PHP để ... –
Sẽ rất hay khi có mã "làm biểu đồ thanh" cho mẫu, bạn có thể đăng nó không? – Otar