首页 > 编程 > PHP > 正文

PHP画图基础

2020-03-22 19:02:01
字体:
来源:转载
供稿:网友
  • Title: PHP画图基础

    Author: MoreWindows

    Blog: http://blog.csdn.net/MoreWindows


    KeyWord: PHP绘图 画点、线、弧线 绘制和填充区域 图片特效 彩色圣诞节大雪花图


    本篇对PHP常用的绘图函数进行总结。内容有建立图像,为图像分配颜色,画点,画线,画弧线,绘制和填充区域,输出字符和汉字及一些常见的图片特效如反色和浮雕。此外还给出一些有趣的实例,如绘制彩色的圣诞节大雪花图。


    一.新建图像

    resource imagecreate( int $x_size , int $y_size )

    imagecreate()返回一个图像标识符,代表了一幅大小为 x_size 和y_size 的空白图像。

    resource imagecreatetruecolor( int $x_size , int $y_size )

    imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size 和y_size 的黑色图像。PHP手册上推荐尽量使用imagecreatetruecolor()函数。

    还有根据.gif、.png、.jpg等文件来创建图像的函数。

    resource imagecreatefromgif( string $filename )

    resource imagecreatefrompng ( string $filename )

    resource imagecreatefromjpeg( string $filename )


    二.为图像分配颜色

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

    imagecolorallocate() 返回一个标识符,代表了由给定的 RGB 成分组成的颜色。red,green 和 blue 分别是所需要的颜色的红,绿,蓝成分。这些参数是 0 到 255 的整数或者十六进制的 0x00 到 0xFF。第一次图像调用 imagecolorallocate()表示设置图像背景色。

    int imagecolorallocatealpha( resource $image , int $red , int $green , int $blue , int $alpha )

    imagecolorallocatealpha() 的行为和imagecolorallocate()相同,但多了一个额外的透明度参数alpha,其值从 0 到127。0表示完全不透明,127 表示完全透明。

    三.画点

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

    注:图像左上角为(0,0)

    四.画线

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

    从(x1, y1)到(x2,y2)。线的风格可以由bool imagesetstyle( resource $image , array $style )来控制。宽度由bool imagesetthickness ( resource $image , int $thickness )控制,注意这个宽度在画矩形、弧线时也生效。

    五.画椭圆弧

    bool imagearc(resource $image , int $cx , int $cy , int $w , int $h , int $s , int $e , int $color)

    imagearc()以cx,cy(图像左上角为 0, 0)为中心在 image 所代表的图像中画一个椭圆弧。w和h 分别指定了椭圆的宽度和高度,起始和结束点以 s 和e参数以角度指定。0度位于三点钟位置,以顺时针方向绘画。如:

    $black = imagecolorallocate($img, 0, 0, 0);

    imagearc($img, 100, 100, 150, 180, 0, 90,$black);

    将在(100,100)处画一段宽150高180的从0到90度的弧,如下图所示(作为参照,右边是全图):


    六.绘制区域

    矩形

    bool imagerectangle ( resource $image , int $x1 , int $y1 , int $x2 , int $y2 , int $col )

    椭圆

    bool imageellipse ( resource $image , int $cx , int $cy , int $w , int $h , int $color )

    多边形

    bool imagepolygon ( resource $image , array $points , int $num_points , int $color )

    七.填充区域

    填充区域

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

    imagefill()在image图像的(x,y)处用 color颜色执行区域填充(即与 (x, y) 点颜色相同且相邻的点都会被填充)。如以下代码片段会先画出蓝色的椭圆,然后用红色填充椭圆内部。

    $blue_color = imagecolorallocate($img, 0, 0, 255);
    $red_color = imagecolorallocate($img, 255, 0, 0);
    imageellipse($img, 300, 200, 300, 200, $blue_color);
    imagefill($img, 300, 200, $red_color);
    $blue_color = imagecolorallocate($img, 0, 0, 255);
    $red_color = imagecolorallocate($img, 255, 0, 0);
    imageellipse($img, 300, 200, 300, 200, $blue_color);
    imagefill($img, 300, 200, $red_color);
    运行效果如下:


    画一椭圆并填充

    bool imagefilledellipse( resource $image , int $cx , int $cy , int $w , int $h , int $color )

    这种画法椭圆是没有边框的,当然也可以如下实现:


    $lucency_color = imagecolorallocatealpha($img, 0, 0, 0, 126);//127为全透明 0全不透明
    $red_color = imagecolorallocate($img, 255, 0, 0);
    imageellipse($img, 300, 200, 300, 200, $lucency_color);

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表