使用函数 phpinfo();
或 gd_info();
查看GD 库相关信息
如果没有开启相关扩展 gd_info() 函数将不可用
在 php.ini 配置文件中 找到 ;extension=php_gd2.dll 去掉前面的分号 保存并重启相关服务
大致步骤如下:
$img = imagecreatetruecolor($width ,$height);//创建画布资源
$color = imagecolorallocate($img ,220 ,220 ,220);//创建颜色
imagefill($img ,$color);//填充画布
//$color 是要画的点的颜色 x ,y 表示坐标 $img 画布资源
imagesetpixel($img, $x, $y, $color);//画点
//$color 是线颜色 x1 ,y1 表示线的开始坐标 x2,y2 结束坐标
imageline($img, $x1, $y1, $x2, $y2, $color);//画线
// $font = 字体大小 1-5 $color 雪花颜色, 莫非不是白色
$string = '*';//雪花 ^ ^
imagestring($img, $font, $x, $y, $string, $color);//画一个字符
//$img 画布资源 $size 字体大小 $angle 字体旋转角度
//$fontfile 要使用的字体文件位置 $text 字符
imagettftext($img, $size, $angle, $x, $y, $color, $fontfile, $text);//文字写入画布
header('Content-type :image/png');//图片格式 .png
imagepng($img);//输出
好了,贴码 一个灰尘简单的验证码类
class Verify
{
protected $string = '123456789abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ';
private $width; //验证码宽
private $height; //高
protected $img; //画布资源
protected $code; //验证码文字
protected $num; //验证码文字个数
//protected $config; //配置项
public function __construct ($width=160 ,$height=45 ,$num=4)
{
$this->width = $width;
$this->height = $height;
$this->num = $num;
$this->set_canvas();
$this->set_disturb();
$this->set_code();
}
//创建画布资源
protected function set_canvas ()
{
$bgColor = [220,220,220];
$this->img = imagecreatetruecolor($this->width, $this->height);//画布资源
$color = imagecolorallocate($this->img, $bgColor[0], $bgColor[1], $bgColor[2]);
imagefill($this->img, 0, 0, $color);//填充画布
}
//设置干扰元素
protected function set_disturb ()
{
//if ($this->config['DISTURB_PIXEL']) {//是否开启点干扰
//生成干扰元素
//随机点100个
for ($i=0; $i<100; $i++) {
$pixel_color = imagecolorallocate($this->img, mt_rand(50,100), mt_rand(50,100), mt_rand(50,100)); //点颜色
imagesetpixel($this->img, mt_rand(0 ,$this->width-1), mt_rand(0 ,$this->height-1), $pixel_color);//随机点
}
//}
//if ($this->config['DISTURB_SNOW']) {
//生成雪花20个
for ($i=0; $i<20; $i++) {
$snow_color = imagecolorallocate($this->img, 255, 255, 255);//雪花颜色
imagestring($this->img, 3, mt_rand(0 ,$this->width-1), mt_rand(0 ,$this->height-1), '*', $snow_color);//随机位置雪花
}
//}
//if ($this->config['DISTURB_LINE']) {
//干扰线10条
for ($i=0; $i<10; $i++) {
$line_color = imagecolorallocate($this->img, mt_rand(50,225), mt_rand(50,225), mt_rand(50,225));//线颜色
imageline($this->img, mt_rand(0 ,$this->width-1), mt_rand(0 ,$this->height-1), mt_rand(0,$this->width-1), mt_rand(0 ,$this->height-1), $line_color); //随机位置线条
}
//}
}
//生成验证码文字
protected function set_code ()
{
//生成随机字符
$str = '';
for ($i=0; $i<$this->num; $i++) {
if (!$this->config['TYPE']) {//代码走这里
$code = substr($this->string, mt_rand(0 ,strlen($this->string)-1) ,1);//生成随机字符
} else { //这里是中文验证码文字 删掉了 一般用不上
$code = mb_substr($this->config['DICTIONARY'], mt_rand(0 ,mb_strlen($this->config['DICTIONARY'] ,'utf8')-1) ,1 ,'utf8');
}
$str .= $code; //拼接字符串
$code_color = imagecolorallocate($this->img, mt_rand(0 ,75), mt_rand(0 ,75), mt_rand(0 ,75));//字体颜色
$size = mt_rand(20 ,25); //字体大小
$angle = 0; //旋转角度
$x = 10+$i*(($this->width)/$this->num); //字符左下角
$y = mt_rand($size ,$this->height-5); //字符基本线(非最底部)
$fontfile = FONT_PATH . mt_rand(1,6) . '.ttf'; //字体文件位置 自行修改
imagettftext($this->img, $size, $angle, $x, $y, $code_color, $fontfile, $code);//写入画布
}
$this->code = $str;//保存文字
}
public function show_verify ()
{
//输出验证码
header('Content-type :image/png');
imagepng($this->img);
}
//返回验证码文字
public function get_code ()
{
return $this->code;
}
function __destruct ()
{
imagedestroy($this->img);//销毁画布资源
}
}
还可能用到GD库的php日常
生成缩略图
图片添加水印(水印文字, 水印图片)附:
https://blog.csdn.net/csdn_zhongwu/article/details/85403142