gd常见函数
imagecreatetruecolor() 返回一个图像标识符,代表了一幅大小为 x_size
和 y_size
的黑色图像。
成功后返回图象资源,失败后返回 FALSE
int imagecolorallocate ( resource
$image
, int $red
, int $green
, int $blue
)第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色,即用 imagecreate() 建立的图像。
bool imagefill ( resource
$image
, int $x
, int $y
, int $color
)imagefill() 在
image
图像的坐标 x
,y
(图像左上角为 0, 0)处用 color
颜色执行区域填充(即与 x, y 点颜色相同且相邻的点都会被填充)imagefilledrectangle ( resource
$image
, int $x1
, int $y1
, int $x2
, int $y2
, int $color
)
在 image
图像中画一个用 color
颜色填充了的矩形,其左上角坐标为 x1
,y1
,右下角坐标为 x2
,y2
。0, 0 是图像的最左上角。
imageellipse ( resource
$image
, int $cx
, int $cy
, int $width
, int $height
, int $color
)在指定的坐标上画一个椭圆。
imagefilledellipse ( resource
$image
, int $cx
, int $cy
, int $width
, int $height
, int $color
)画一椭圆并填充到指定的 image
。
bool imagepng ( resource
$image
[, string $filename
] )imagepng() 将 GD 图像流(image
)以 PNG 格式输出到标准输出(通常为浏览器),
如果用 filename
给出了文件名则将其输出到该文件。
<?php
$im = imagecreatefrompng("test.png");
imagepng($im);
?>
imagedestroy() 释放与
image
关联的内存。
array getimagesize ( string
$filename
[, array &$imageinfo
] ) 取得图片大小imagefilledarc ( resource
$image
, int $cx
, int $cy
, int $width
, int $height
, int $start
, int $end
, int $color
, int $style
)bool imagestring ( resource
$image
, int $font
, int $x
, int $y
, string $s
, int $col
)imagestring() 用 col
颜色将字符串 s
画到 image
所代表的图像的 x
,y
坐标处(这是字符串左上角坐标,整幅图像的左上角为 0,0)。如果 font
是 1,2,3,4 或 5,则使用内置字体。
imageline ( resource
$image
, int $x1
, int $y1
, int $x2
, int $y2
, int $color
)imageline() 用 color
颜色在图像 image
中从坐标 x1
,y1
到 x2
,y2
(图像左上角为 0, 0)画一条线段。
在指定的 image
上画一椭圆弧且填充。
<?php
header ('Content-Type: image/png');
$im = @imagecreatetruecolor(120, 20)
or die('Cannot Initialize new GD image stream');
$text_color = imagecolorallocate($im, 233, 14, 91);
imagestring($im, 1, 5, 5, 'A Simple Text String', $text_color);
imagepng($im);
imagedestroy($im);
?>
实际应用:
绘制一个饼状图:
<?php header("Content-type:image/png"); //创建画布 $img = imagecreatetruecolor(800, 600); //添加颜色 $blue = imagecolorallocate($img,0, 0, 255);
imagefill($img, 0, 0, $blue); //填充颜色 // /imagefill($img, 0, 0, $blue); $red = imagecolorallocate($img,255, 0, 0); //添加filled填充效果 $green = imagecolorallocate($img,0, 255, 0); //画圆弧 //imagearc($img, 400, 300, 300, 300, 270, 0, $green); //画圆弧并且填充颜色 /* 1IMG_ARC_PIE 2.IMG_ARC_CHORD 3.IMG_ARC_NOFILL 4.IMG_ARC_EDGED IMG_ARC_PIE 和 IMG_ARC_CHORD 是互斥的;IMG_ARC_CHORD 只是用直线连接了起始和结束点,IMG_ARC_PIE 则产生圆形边界。IMG_ARC_NOFILL 指明弧或弦只有轮廓,不填充。IMG_ARC_EDGED 指明用直线将起始和结束点与中心点相连,和 I MG_ARC_NOFILL 一起使用是画饼状图轮廓的好方法(而不用填充)。 */ //imagefill 根据所在位置进行填充 如果是在圆形内部就填充圆形 否则填充外部 除开圆形 //600 300 $gray = imagecolorallocate($img, 0xC0, 0xC0, 0xC0); $darkgray = imagecolorallocate($img, 0x90, 0x90, 0x90); $navy = imagecolorallocate($img, 0x00, 0x00, 0x80); $darknavy = imagecolorallocate($img, 0x00, 0x00, 0x50); $red = imagecolorallocate($img, 0xFF, 0x00, 0x00); $darkred = imagecolorallocate($img, 0x90, 0x00, 0x00); for($i = 300;$i>250;$i--){
//绘制椭圆形 资源、x轴 y轴 长半轴 短半轴 颜色 imagefilledarc($img, 400, $i, 400, 350, 0, 45, $darkgray,0); imagefilledarc($img, 400, $i, 400, 350, 45, 270, $darkred,0); imagefilledarc($img, 400, $i, 400, 350, -90, 0, $darknavy,0); }
//这里先用比较昏暗的颜色绘制 这样可以有阴影效果 imagefilledarc($img, 400, 250, 400, 350, 0, 45, $gray,0); imagefilledarc($img, 400, 250, 400, 350, 45, 270, $red,0); imagefilledarc($img, 400, 250, 400, 350, -90, 0, $navy,0);
//明亮颜色绘制 imagepng($img);
//以png格式输出图片到浏览器上 imagedestroy($img);
//销毁图片资源
效果:
验证码:
<?php $img = imagecreatetruecolor(200, 50); $str = "abcdefg"; $f = imagecolorallocate($img, 0, 0, 0); imagefill($img, 0, 0, $f); $s = str_shuffle($str);//搅乱成无序的数组 for($i=0;$i<4;$i++){ $c = substr($str, rand(0,strlen($s)),1); $color = imagecolorallocate($img, 50, 50, 50); imagestring($img, 6, 10+$i*40, rand(10,30), $c, $color); imageline($img, rand(0,30), rand(0,50), rand(150,200), rand(0,50), $color); } $color = imagecolorallocate($img, 0, 0, 255); header("Content-type:image/png;charset=utf8"); imagepng($img); imagedestroy($img);
效果图: