php_GD函数库

作者: 鲁智深 分类: PHP 发布时间: 2015-01-08 13:55

GD函数库概述

是php的扩展库,它提供操作图像的一系列函数。(验证码、图片缩略图)

安装和配置php扩展库

目录:php–》ext–》php.ini打开 php_gd2.dll(开启去分号)

GD函数库

做到:理解绘图的过程、理解屏幕的坐标体系

gd库画图的流程

创建画布

创建各种颜色

开始画(如画线、写字、画矩形等)

保存生成的图片

清理战场,销毁画布

imagecreate 新建一个基于调色的图像

resource imagecreate ( int $x_size , int $y_size )

网页上常用的图片jpg,png,gif

header(“content-typr:image/gif”);

指定了页面的内容gif图片,页面运行完毕,生成一个gif图像

imagegif:以GIF图像输出到浏览器或文件

bool imagegif ( resource $image)

1
imagegif($img);//以GIF图像输出到浏览器或文件

imagejpg:以JPG图像输出到浏览器或文件

bool imagejpg ( resource $image)

imagepng:以PNG图像输出到浏览器或文件

bool imagepng ( resource $image)

imagedestroy()销毁图像在内存中的空间

bool imagedestroy ( resource $image )

1
imagedestroy($img);//销毁图像在内存中的空间

imagecreatetruecolor新建一个真彩色图像【推荐使用】

resource imagecreatetruecolor ( int $width , int $height )

1
2
3
4
     //创建画布
     $width = 400;
     $heigth = 300;
     $im = imagecreatetruecolor($width,$heigth);

imagechar水平地画一个字符

资源 字体 坐标 坐标 内容 颜色

bool imagechar ( resource $image , int $font , int $x , int $y , string $c , int $color )

imagestring水平地画一行字符串【推荐使用】

资源 字体 坐标 坐标 内容 颜色

bool imagestring ( resource $image , int $font , int $x , int $y , string $s , int $col )

1
2
3
     //写个字符串
     $str = 12345;
     imagestring($im,5,0,0,$str,$green);

imagecolorallocate为一幅图像分配颜色

资源 0~255 0~255 0~255

int imagecolorallocate ( resource $image , int $red , int $green , int $blue )

1
2
3
     //创建两个颜色
     $red = imagecolorallocate($im,255,0,0);
     $green = imagecolorallocate($im,0,255,0);

imagefilledrectangle画一矩形并填充

bool imagefilledrectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

imagesetpixel画一个单一像素(画验证码点)

bool imagesetpixel ( resource $image , int $x , int $y , int $color )

1
2
3
4
5
//画躁点
$ba = imagecolorallocate ($img,rand(0,255),rand(0,255),rand(0,255));
for($j=1;$j<60;$j++){
imagesetpixel ($img,rand(0,100),rand(0,100),$ba);
}

imageline画一条线段

资源 起点坐标 终点坐标 颜色

bool imageline ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

1
2
3
     //画线
     imageline($im,0,0,565,407,$red);
     imageline($im,565,0,0,407,$green);

imagettftext用 TrueType 字体向图像写入文本

资源 字体大小 角度 左下角 颜色 字体 内容

array imagettftext ($image,$size,$angle,$x,$y,$color,$fontfile,$text )

1
2
//真正的验证不用imagestring用imagettftext
imagettftext ($img,15,rand(-3,3),2组长作业0,50,$ba,"trebuc.ttf",$string);

案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
header("content-type:image/gif");//指定了页面的内容gif图片,页面运行完毕,生成一个gif图像
$width = 100;//宽度150
$height = 100;//高度150
//$img = imagecreate($width,$height);//创建图像
$img = imagecreatetruecolor($width,$height);//创建一个真色彩推荐用imagecreatetruecolor

//创建随机背景画布
$whlie = imagecolorallocate ($img,255,255,255);
imagefilledrectangle ($img,0,0,100,100,$whlie);

//画躁点
$ba = imagecolorallocate ($img,rand(0,255),rand(0,255),rand(0,255));
for($j=1;$j<60;$j++){
imagesetpixel ($img,rand(0,100),rand(0,100),$ba);
}

//划线
for($f=1;$f<4;$f++){
imageline ($img,rand(0,100),rand(0,100),rand(0,100),rand(0,100),$ba);
}

$string = "abcdefg123566";
//echo $string[1];//输出b,所以得出结论,字符串也可以当成数组使用
for($i=0;$i<5;$i++){
     $string_0 = $string_0.$string[rand(0,11)];
}

//创建颜色
$color = imagecolorallocate ($img,255,0,0);

$string = $string_0;//创建图片内的内容

//imagestring($img,5,20,20,$string,$color);//水平地画一行字符串

//真正的验证不用imagestring用imagettftext
imagettftext ($img,15,rand(-3,3),2组长作业0,50,$ba,"trebuc.ttf",$string);

imagegif($img);//以GIF图像输出到浏览器或文件
imagedestroy($img);//销毁图像在内存中的空间
?>

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

发表评论

电子邮件地址不会被公开。 必填项已用*标注