用php画图,如何画出下划线效果?
用gd2, 想生成一个证明书,想画下划线,如何实现
回复讨论(解决方案)
在适当的地方画条线
使用gd画条线就可以了,定好位置来画。
例如:
header(“content-type: image/png”);
$length = 6;
$authnum = ‘abcdef’; //字符.
$width = 13;//文字宽度
$height = 18;//文字高度
$pw = $width*$length+100;
$ph = $height+60;
$im = imagecreate($pw,$ph); //imagecreate() 新建图像,大小为 x_size 和 y_size 的空白图像。
$black = imagecolorallocate($im, 238,238,238); //设置背景颜色
/* 文字 */
for ($i = 0; $i < strlen($authnum); $i++){
$font = imagecolorallocate($im, mt_rand(0,50),mt_rand(0,150),mt_rand(0,200));//设置文字颜色
$x = $i/$length * $pw + 1;
$y = 1;
imagestring($im, mt_rand(4,6), $x, $y, substr($authnum,$i,1), $font);
}
/* 线 */
$dist = imagecolorallocate($im, 0,0,0); //設置線顏色
imageline($im,0,20,250,20,$dist);
imagepng($im); //以 png 格式将图像输出到浏览器或文件
imagedestroy($im); //销毁一图像
使用gd画条线就可以了,定好位置来画。
例如:
header(“content-type: image/png”);
$length = 6;
$authnum = ‘abcdef’; //字符.
$width = 13;//文字宽度
$height = 18;//文字高度
$pw = $width*$length+100;
$ph = $height+60;
$im = imagecreate($pw,$ph); //imagecreate() 新建图像,大小为 x_size 和 y_size 的空白图像。
$black = imagecolorallocate($im, 238,238,238); //设置背景颜色
/* 文字 */
for ($i = 0; $i < strlen($authnum); $i++){
$font = imagecolorallocate($im, mt_rand(0,50),mt_rand(0,150),mt_rand(0,200));//设置文字颜色
$x = $i/$length * $pw + 1;
$y = 1;
imagestring($im, mt_rand(4,6), $x, $y, substr($authnum,$i,1), $font);
}
/* 线 */
$dist = imagecolorallocate($im, 0,0,0); //設置線顏色
imageline($im,0,20,250,20,$dist);
imagepng($im); //以 png 格式将图像输出到浏览器或文件
imagedestroy($im); //销毁一图像
谢谢 thinkyou
如果我只想对 b 和 e 进行下划线操作 怎么办
$im = imagecreatetruecolor(300,200);
$bg = imagecolorallocate($im, 255,255,255);
$color = imagecolorallocate($im, 0,0,0);
imagefill($im, 0,0,$bg);
$font = ‘fonts/stxingka.ttf’;
$size = 100;
$angle = 0;
$str = ‘abcedf’;
$xh = array(‘b’, ‘e’);
$p = ‘/(‘ . join(‘|’, $xh) . ‘)/’;
$ar = imagettfbbox($size, $angle, $font, $str);
$height = max($size,$ar[1]-$ar[5]) – $ar[1] + 30;
$width = 0;
$dat = preg_split($p, $str, -1, preg_split_delim_capture);
foreach($dat as $str)
{
$ar = imagettfbbox($size, $angle, $font, $str);
imagettftext ($im, $size, $angle, $width + $ar[0]-$ar[6], $height, $color, $font, $str);
if(in_array($str, $xh)) imagefilledrectangle($im, $width, $height+10, $width + $ar[2]-$ar[0], $height+13, $color);
$width += $ar[2]-$ar[0];
}
header(“content-type: image/jpeg”);
imagejpeg($im);
imagedestroy($im);