PHP动态图像处理
相关代码见:https://www.github.com/lozybean/learn_www/ 目录
1. 画布管理:
imagecreate():创建一个基于调色板的画布,指定画布的长、宽,并返回其资源句柄;
imagecreatetruecolor():创建一个真彩色图像画布,指定画布的长、宽,并返回其资源句柄;
imagedestroy():销毁一个画布句柄;
2. 设置颜色:imagecolorallocate(),第一个参数指定画布句柄,后三个参数分别指定rgb值,返回一个颜色标示符;
3. 生成图像:imagegif()、imagejpeg()、imagepng()、imagewbmp(),分别生成不同格式的图像;
在生成图像之前,必须使用header()函数,告知浏览器使用正确的MIME类型对接收的内容进行解析;
header(“Content-type: image/gif")
4. 绘制图像:
imagefill(resource $image,$x,$y,$color),坐标($x,$y)表示相对于图像左上角(0,0)的位置,使用$color填充,与该点相邻且颜色相同的点都会被填充,有点像油漆桶的操作。
imagesetpixel(resource $image,$x,$y,$color),在($x,$y)出绘制一个单一点;
imageline(resource $image,$x1,$y1,$x2,$y2,$color),绘制一条起点为($x1,$y1),终点为($x2,$y2)的线段;
imagerectangle(resource $image,$x1,$y1,$x2,$y2,$color),绘制一个矩形,左上角为($x1,$y1),右下角为($x2,$y2);
imagefilledrectangle():绘制一个矩形,并使用颜色填充;
imagepolygon(resource $image,array $points,int $num_points, int $color):绘制一个多边形,$points数组指定多边形每个顶点的坐标,依次以x0,y0,x1,y1的顺序保存,$num_points指定顶点总数;
imagefilledpolygon():和上一个函数一样,并使用颜色填充;
imageellipse(resource $image,$cx,$cy,$w,$h,$color):绘制一个椭圆,($cx,$cy)指定椭圆的中心,$w,$h表示椭圆的宽和高;
imagefilledellipse():和上一个函数一样,并使用颜色填充;
imagearc(resource $image,$cx,$cy,$w,$h,$s,$e,$color):绘制圆弧,($cx,$cy)为坐标中心,$w和$h分别指定椭圆的宽和高,起始点和终止点以角度指定,$s,$e指定开始和终止的角度,其中0°位于三点钟的位置;
imagefilledarc():和上一个函数一样,并使用颜色填充;
5. 绘制文字:
imagestring(resource $image,$font,$x,$y,$s,color):水平画一行字符串,$font为一个整形表示内置字体,值越大字体越大,($x,$y)表示起点坐标,$s指定字符串;
imageupstring():垂直画一行字符串,参数相同;
imagechar():水平画一个字符,参数相同,$s出为一个字符;
imageupchar():垂直画一个字符,参数相同;
6. TrueType字体:imagettftext(resource $image,float $size,float $angle, int $x, int $y, int $color,string $fontfile, string $text);
其中$size设定字体大小,$angle设定角度,0°为从左向右的角度,更高的数值表示逆时针旋转,($x,$y)代表第一个字符的左上角坐标,$fontfile指定一个TrueType字体的路径,$text指定输出的字符串;如果是中文,则应该将其转换为UTF-8编码:iconv(“GB2312”,”UTF-8”,”一个中文”);
7. 验证码应用(见目录vcode)
8. 图像处理应用(见目录handle_image)