VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > PHP >
  • PHP中生成图像程序代码

下面综合总结了在php中常用的图像处理函数的一些使用例子,下面一起来看看希望这些例子能帮助到深入的理解PHP图像处理函数.

在PHP中绘制图像的函数非常丰富,包括点、线、各种几何图形等可以想象出来的平面图形,都可以通过PHP中提供的各种画图函数完成,我们在这里介绍一些常用的图像绘制,如果使用我们没有介绍过的函数,可以参考手册实现,另外,这些图形绘制函数都需要使用画布资源,并在画布中的位置通过坐标(原点是在画布左上角的起始位置,以像素为单位,沿着X轴正方向向右延伸,Y轴正方向向下延伸)决定,并且还可以通过函数的最后一个参数,设置每个图形的颜色.

1.函数图形区域填充imageFill()

通过PHP仅仅绘制出只有边线的几何图形是不够的,还可以使用对应的填充函数,完成图形区域的填充,除了每个图形都有对应的填充函数之外,还可以使用imageFill()函数实现区域填充,该函数的语法格式如下:

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

区域填充:该函数在参数$image代表的图像上,相对于图像左上角(0,0)坐标处,从坐标($x,$y)处用参数$color指定的颜色执行区域填充,与坐标($x,$y)点颜色相同且相邻的点都会被填充,例如在下面的示例中,将画布的背景设置为红色,代码如下所示:

  1. <?php  
  2. $im = imagecreatetruecolor(100, 100); //创建100*100大小的画布 
  3. $red = imagecolorallocate($im, 255, 0, 0); //设置一个颜色变量为红色 
  4.  
  5. imagefill($im, 0, 0, $red); //将背景设为红色 
  6.  
  7. header('Content-type:image/png'); //通知浏览器这不是文本而是一个图片 
  8. imagepng($im); //生成PNG格式的图片输出给浏览器 
  9. //开源代码phpfensi.com 
  10. imagedestroy($im); //销毁图像资源,释放画布占用的内存空间 
  11. ?> 

2.绘制点和线imageSetPixel()、imageline()

画点和线是绘制图像中最基本的操作,如果灵活使用,可以通过它们绘制出千变万化的图像。在PHP中,使用imageSetPixel()函数在画布中绘制一个单一像素的点,并且可以设置点的颜色。其函数的原型如下所示:

bool imagesetpixel(resource $image,int $x,int $y,int $color)                         //画一个单一像素

该函数在第一个参数$image中提供的画布上,距离圆点分别为$x和$y的坐标位置,绘制一个颜色为$color的一个像素点。理论上使用画点函数便可以画出所需要的所有图形,也可以使用其他的绘图函数。如果需要绘制一条线段,可以使用imageline()函数,其语法格式如下所示:

bool imageline(resource $image,int $x1,int $y1,int $x2,int $y2,int $color)                //画一条线段

我们都知道两点确定一条线段,所以该函数使用$color颜色在图像$image中,从坐标($x1,$x2)开始到($x2,$y2)坐标结束画一条线段。

3.绘制矩形imageRectangle()、imageFilledRectangle()

可以使用imageRectangle()函数绘制矩形,也可以通过imageFilledRectangle()函数绘制一个矩形并填充。这两个函数的语法格式如下所示:

bool imagerectangle(resource $image,int $x1 , int $y1,int $x2,int $y2,int $color)   //画一个矩形

bool imagefilledrectangle(resource image,int $x1 ,int $y1 ,int $x2 ,int $y2,int $color)  //画一个矩形并填充

这两个函数的行为类似,都是在$image图像中画一个矩形,只不过前者是使用$color参数指定矩形的边线颜色,而后者则是使用这个颜色填充矩形,相对于图像左上角的(0,0)位置,矩形的左上角坐标为($x1,$y1),右下角坐标为($x2,$y2)。

4.绘制多边形imagePolygon()、imagefilledpolygon()

可以使用imagePolygon()函数绘制一个多边形,也可以通过imageFilledPolygon()函数绘制一个多边形并填充。这两个函数的语法格式如下:

bool imagepolygon(resource $image,array $points,int $num_points,int $color)                   //画一个多边形

bool imagefilledpolygon(resource $image ,array $points,int $num_points,int $color)   //画一个多边形并填充

这两个函数的行为类似,都是在$image图像中画一个多边形,只不过前者是使用$color参数指定多边形的边线颜色,而后者则是使用这个颜色填充多边形。第二个参数$points是一个PHP数组,包含了多边形的各个顶点坐标。即points[0]=x0,points[1]=y0,points[2]=x1,points[3]=y1,依此类推。第三个参数$num_points是顶点的总数,必须大于3.

5.绘制椭圆imageEllipse()、imageFilledElipse()

可以使用imageEllipse()函数绘制一个椭圆,也可以通过imageFilledEllipse()函数绘制一个椭圆并填充。这两个函数的语法格式如下:

bool imageellipse(resource $image,int $cx,int $cy,int $w,int $h,int $color)              //画一个椭圆

bool imagefilledellipse(resource $image,int $cx,int $cy,int $w,int $h,int $color)  //画一个椭圆填充

这两个函数行为类似,都是在$image图像中画一个椭圆,只不过前者是使用$color参数指定椭圆形的边线颜色,而后者则是使用它填充颜色。相对于画布左上角坐标(0,0),以($cx,$cy)坐标为中心画一个椭圆,参数$w和$h分别指定了椭圆的宽和高。如果成功则返回TRUE,失败则返回FALSE。

6.绘制弧线imageArc()

就是使用绘制填充圆弧的函数实现的,可以使用imageArc()函数绘制一条弧线,以及圆形和椭圆形,这个函数的语法格式如下:

bool imagearc(resource $image ,int $cx,int $cy,int $w,int $h,int $s,int $e ,int $color) //画椭圆弧

相对于画布左上角坐标(0,0),该函数以($cx,$cy)坐标为中心,在$image所代表的图像中画一个椭圆弧。其中参数$w和$h分别指定了椭圆的宽度和高度,起始点和结束点以$s和$e参数以角度指定。0º位于三点钟位置,以顺时针方向绘画。如果要绘制一个完整的圆形,首先要将参数$w和$h设置为相等的值,然后将起始角度$s设置为0,结束角度$e指定为360.如果需要绘制填充圆弧,可以查询imageFilledArc()函数使用。

下面再看一个由图片处理函数生成的一个 3D扇形统计图示例,代码如下:

  1. <?php  
  2.     //创建画布,返回一个资源类型的变量$image,并在内存中开辟一个临时区域 
  3.     $image = imagecreatetruecolor(100, 100);                //创建画布大小为100x100 
  4.  
  5.     //设置图像中所需的颜色,相当于在画画时准备的染料盒 
  6.     $white = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);          //为图像分配颜色为白色 
  7.     $gray = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);           //为图像分配颜色为灰色 
  8.     $darkgray = imagecolorallocate($image, 0x90, 0x90, 0x90);       //为图像分配颜色为暗灰色 
  9.     $navy = imagecolorallocate($image, 0x00, 0x00, 0x80);           //为图像分配颜色为深蓝色 
  10.     $darknavy = imagecolorallocate($image, 0x00, 0x00, 0x50);       //为图像分配颜色为暗深蓝色 
  11.     $red = imagecolorallocate($image, 0xFF, 0x00, 0x00);           //为图像分配颜色为红色 
  12.     $darkred = imagecolorallocate($image, 0x90, 0x00, 0x00);       //为图像分配颜色为暗红色 
  13.  
  14.     imagefill($image, 0, 0, $white);            //为画布背景填充背景颜色 
  15.     //动态制作3D效果 
  16.     for ($i = 60; $i >50; $i--){                //循环10次画出立体效果 
  17.         imagefilledarc($image, 50, $i, 100, 50, -160, 40, $darknavy, IMG_ARC_PIE); 
  18.         imagefilledarc($image, 50, $i, 100, 50, 40, 75, $darkgray, IMG_ARC_PIE); 
  19.         imagefilledarc($image, 50, $i, 100, 50, 75, 200, $darkred, IMG_ARC_PIE); 
  20.     } 
  21.  
  22.     imagefilledarc($image, 50, 50, 100, 50, -160, 40, $navy, IMG_ARC_PIE);      //画一椭圆弧且填充 
  23.     imagefilledarc($image, 50, 50, 100, 50, 40 , 75, $gray, IMG_ARC_PIE);      //画一椭圆弧且填充 
  24.     imagefilledarc($image, 50, 50, 100, 50, 75, 200, $red, IMG_ARC_PIE);      //画一椭圆弧且填充 
  25.  
  26.     imagestring($image, 1, 15, 55, '34.7%'$white);                //水平地画一行字符串 
  27.     imagestring($image, 1, 45, 35, '55.5%'$white);                //水平地画一行字符串 
  28. //开源代码phpfensi.com 
  29.     //向浏览器中输出一个GIF格式的图片 
  30.     header('Content-type:image/png');               //使用头函数告诉浏览器以图像方式处理以下输出 
  31.     imagepng($image);                       //向浏览器输出 
  32.     imagedestroy($image);                   //销毁图像释放资源 
  33. ?> 

直接通过浏览器请求该脚本,或是将该脚本所在的URL,赋给HTML中的IMG标记的src属性,都可以获取动态输出的图像结果.


出处:http://www.phpfensi.com/php/20140818/4406.html


相关教程