tôi đã được sử dụng kịch bản này đơn giản để tạo ra hình ảnh từ văn bản:?Sử dụng PHP GD để tạo ra hình thức văn bản hình ảnh với phông chữ khác nhau
<?php
header('Content-type: image/png');
$color = RgbfromHex($_GET['color']);
$text = urldecode($_GET['text']);
$font = 'arial.ttf';
$im = imagecreatetruecolor(400, 30);
$bg_color = imagecolorallocate($im, 255, 255, 255);
$font_color = imagecolorallocate($im, $color[0], $color[1], $color[2]);
imagefilledrectangle($im, 0, 0, 399, 29, $bg_color);
imagettftext($im, 20, 0, 10, 20, $font_color, $font, $text);
imagepng($im);
imagedestroy($im);
function RgbfromHex($hexValue) {
if(strlen(trim($hexValue))==6) {
return array(
hexdec(substr($hexValue,0,2)), // R
hexdec(substr($hexValue,2,2)), // G
hexdec(substr($hexValue,4,2)) // B
);
}
else return array(0, 0, 0);
}
?>
tôi gọi là kịch bản với file.php text = kiểm tra kịch bản & color = 000000
Bây giờ tôi muốn biết làm thế nào tôi có thể tạo ra văn bản với phông chữ bình thường và đậm trộn lẫn trong cùng một hình ảnh, một cái gì đó giống như file.php?text=testing <b>script</b>&color=000000
Cảm ơn dqhendricks để giúp tôi tìm ra điều này.
Dưới đây là một kịch bản nhanh chóng tôi đã viết, vẫn cần nhiều cải tiến nhưng đối với các chức năng cơ bản có vẻ như được làm việc tốt:
<?php
header('Content-type: image/png');
$color = RgbfromHex($_GET['color']);
$im = imagecreatetruecolor(400, 30);
$white = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 399, 29, $white);
$tmp = $_GET['text'];
$words = explode(" ", $tmp);
$x = array(0,0,10); // DUMMY ARRAY WITH X POSITION FOR FIRST WORD
$addSpace = 0;
foreach($words as $word)
{
if($addSpace) $word = " ".$word; // IF WORD IS NOT THE FIRST ONE, THEN ADD SPACE
if(stristr($word, "<b>"))
{
$font = 'arialbd.ttf'; // BOLD FONT
$x = imagettftext($im, 20, 0, $x[2], 20, imagecolorallocate($im, $color[0], $color[1], $color[2]), $font, str_replace(array("<b>","</b>"), "", $word));
}
else
{
$font = 'arial.ttf'; // NORMAL FONT
$x = imagettftext($im, 20, 0, $x[2], 20, imagecolorallocate($im, $color[0], $color[1], $color[2]), $font, $word);
}
$addSpace = 1;
}
imagepng($im);
imagedestroy($im);
function RgbfromHex($hexValue) {
if(strlen(trim($hexValue))==6) {
return array(
hexdec(substr($hexValue,0,2)), // R
hexdec(substr($hexValue,2,2)), // G
hexdec(substr($hexValue,4,2)) // B
);
}
else return array(0, 0, 0);
}
?>
Lưu ý: Điều này sẽ chỉ làm việc cho "bolding" từ đơn tách bằng dấu cách và không cho bolding một phần của một từ.
Gọi kịch bản với file.php?text=testing+<b>script</b>&color=000000
Hãy thử http://www.roseindia.net/tutorial/php/phpgd/About-boldtext.html có vẻ như để làm những gì bạn muốn, đó là phông chữ màu đen đó là trên đầu trang của phông chữ màu xám, bạn chỉ có thể thay đổi vị trí của màu xám để cho phép chúng được đặt theo cách bạn muốn. URL sẽ tương tự như 'file.php? Text = testing & bold = script & color = 000000'. – Daniel
Điều đó không giống như đậm, nhưng giống như một cái bóng, và nếu tôi đặt nó chỉ là một ở phía trước của nhau tôi không nghĩ rằng họ sẽ xuất hiện bất kỳ khác nhau như chỉ có một imagettftext(). – Meredith