使用gd库生成图片。

<?php

defined('IN_CMS') or exit('No permission resources.'); 

$txt = trim($input->get('txt'));

if(extension_loaded('gd') && $txt ) {

header ("Content-type: image/png");

$txt = urldecode(sys_auth($txt, 'DECODE'));

$fontsize = $input->get('fontsize') ? intval($input->get('fontsize')) : 16;

$fontpath = PC_PATH.'libs'.DIRECTORY_SEPARATOR.'data'.DIRECTORY_SEPARATOR.'font'.DIRECTORY_SEPARATOR;

$fontfile = $input->get('font') && !empty($input->get('font')) ? $fontpath.trim($input->get('font')) : $fontpath.'georgia.ttf';

$fontcolor = $input->get('fontcolor') && !empty($input->get('fontcolor')) ? trim($input->get('fontcolor')) : 'FF0000';

$fontcolor_r = hexdec(substr($fontcolor,0,2));

$fontcolor_g = hexdec(substr($fontcolor,2,2));

$fontcolor_b = hexdec(substr($fontcolor,4,2));

if(file_exists($fontfile)){

//计算文本写入后的宽度,右下角 X 位置-左下角 X 位置

$image_info = imagettfbbox($fontsize,0,$fontfile,$txt);

$imageX = $image_info[2]-$image_info[0]+10;

$imageY = $image_info[1]-$image_info[7]+5;

//print_r($image_info);

$im = @imagecreatetruecolor ($imageX, $imageY) or die ("Cannot Initialize new GD image stream");

$white= imagecolorallocate($im, 255, 255, 255);

$font_color= imagecolorallocate($im,$fontcolor_r,$fontcolor_g,$fontcolor_b);

if(intval($input->get('transparent')) == 1) imagecolortransparent($im,$white); //背景透明

imagefilledrectangle($im, 0, 0, $imageX, $imageY, $white);

$txt = iconv(CHARSET,"UTF-8",$txt);

imagettftext($im, $fontsize, 0, 5, $imageY-5, $font_color, $fontfile, $txt);

} else {

$imageX = strlen($txt)*9;

$im = @imagecreate ($imageX, 16) or die ("Cannot Initialize new GD image stream");

$bgColor = ImageColorAllocate($im,255,255,255);

$white=imagecolorallocate($im,234,185,95);

$font_color=imagecolorallocate($im,$fontcolor_r,$fontcolor_g,$fontcolor_b);

$fonttype = intval($input->get('fonttype'));

imagestring ($im, $fonttype, 0, 0,$txt, $font_color);

}

imagepng ($im);

imagedestroy ($im);

}

?>

 

 

 

 

添加文字间距,修改特殊字符显示文字不全。

使用 imagettftext() 函数添加文字,该函数可以指定文字的字体、大小、颜色、角度等参数,还可以设置文字的间距。
使用 imagestring() 或 imagestringup() 函数添加文字,这些函数可以指定文字的字体、大小、颜色等参数,但是不能指定文字的间距。