gd库的相关内容

gd库注意事项

对于乱码问题

在php里面包含

header("content-type:image/png");

这样输出的图像就不会乱码了后面跟的Png也可以改变为自己想要输出的图像格式,在这个时候如果var_dump();那么就会出错误,因为输出的是图片格式,需要用到var_dump()的时候注释掉就可以了。

关于图像的画布创建

imageCreateTrueColor(height,weidth);//创建画布设置宽高

创建颜色对象

imageColorAllocate(img_resource,r,g,b);//设置画布的颜色

填充画布背景颜色

imageFill(img_resource,x,y,color);

(x,y)表示从哪里开始填充颜色不写的话默认是黑色的

出现的问题:在设置起始填充位置时如果超出画布大小则会以默认颜色填充

绘制矩形

空心

imagerectangle(img_resource,x1,y1,x2,y2,color);

x1,y1左上角

x2,y2右下角

实心

imagefilledrectangle(img_resource,x1,y1,x2,y2,color);

绘制圆形

空心

imageellipse(img_resource,x,y,圆形的上下长,圆形的左右长,color);

x,y表示的圆心位置

实心

imagefilledellipse(img_resource,x,y,圆形的上下长,圆形的左右长,color);

绘制线条

imageline(img_resource,x1,y1,x2,y2,color)

x1,y1起始位置坐标

x2,y2终点位置坐标

设置绘制线条的宽度

imagesetthickness(img_resource,width);//设置绘制线条的宽度

在绘制某一图形之前设置

要绘制两个宽度不一样的线条,案例如下

imagesetthickness($im,20);
imageline($im,0,0,500,500,$blue);
imagesetthickness($im,10);
imageline($im,0,500,500,0,$blue);

这样,两条线就得到了不同的宽度

设置填充的样式

imagesetstyle($im,[$red,$blue,$green]);

一样在绘制前设定上面的案例指的是填充的是三色交替的样子,设置完之后要想看到效果,

imageline(img_resource,x1,y1,x2,y2,IMG_COLOR_STYLED)//颜色资源要改成这个常量IMG_COLOR_STYLED

画一个点(实用性一般用于对验证码产生干扰点防止一些软件识别验证码)

imagesetpixel($im,x,y,color);

案例如下

同理把绘制点改为线就能出线干扰线,有兴趣的可以试试我下面的代码跑着玩,每刷新一次又出现新的线条,很有意思的

图像的保存和显示

显示我们已经用到过了的

imagepng($im);//在浏览器显示资源
imagepng($im,'文件名.png');//保存资源,路径在和代码所在位置同一路径

结束后记得清理内存,图像会占用内存

imagedestroy($im);//操作完成后清理内存

显示文字在图像中(主要应用与验证码)

imagettftext($im,size,angle,x,y,color,$font,$text);

size:字体大小,angle:角度,起始打印位置(x,y),颜色color,font:字体资源路径,text文字内容

案例如下

mb_substr( $str, $start, $length, $encoding )
$str,需要截断的字符串
$start,截断开始处,起始处为0
$length,要截取的字数
$encoding,网页编码,如utf-8,GB2312,GBK

文本盒子的概念(实用性,指定位置打水印)

能够装下文字的盒子

 imagettfbbox ($size,$angle,$fontfile,$text)
imagettfbbox() 返回一个含有 8 个单元的数组表示了文本外框的四个角:
0   左下角 X 位置
1   左下角 Y 位置
2   右下角 X 位置
3   右下角 Y 位置
4   右上角 X 位置
5   右上角 Y 位置
6   左上角 X 位置
7   左上角 Y 位置

知道了四个角的坐标点我们就可以来求出文本所占的宽高,从而控制文字所在位置

你可能感兴趣的:(gd库的相关内容)