绘制验证码

        在PHP中,可以使用GD2函数库,来绘制图像。这里,我们简单介绍采用GD2函数库绘制图像的基本步骤和函数,并使用其来绘制简单的验证码图像。

从PHP的4.3版本开始,PHP捆绑了自己版本的GD2库。在windows平台下,只要注册了php_gd2.dll扩展,PNG和JPEG是自动支持的。注册php_gd2.dll非常简单,只要在PHP安装目录(\ext子目录)找到该文件并复制到系统目录(如果使用Windows XP, 就是C:\Windows\system)。此外,还需要在php.ini文件中取消如下一行指令的注释:

;extension = php_gd2.dll


下面来介绍绘图步骤:

(1)首先获得一个图像资源,可以创建(或修改)一个图像。

$im = imagecreatetruecolor( &width, &height);      //创建一个指定宽高的空白图像

或者,打开一个已有图像资源:

&im = imagecreatefrompng( ' baseimage.png');   //打开一个PNG图像资源

如果要打开JPEG或者GIF图像资源,则需要使用函数

$im = imagecreatefromjpeg('baseimage.jpeg');

$im = imagecreatefromgif('baseimage.gif');

(2)在图像上绘图或打印文本

首先,必须选择希望绘制的颜色。对每个PHP图像资源,都需要使用函数imgecolorallocate( )来选择颜色。

$color1 = imagecolorallocate($im, 255, 0, 0);   

$color2 = imagecolorallocate($im, 0, 0, 255);

然后,在每一次绘制文本或者其它形状,都必须待上颜色参数。

imagestring( )函数来输绘制文本

bool imagestring(resource image, int font, int x, int y, string s, int color);

imageline( )函数绘制直线

bool imageline(resource image, int x, int y, int x2, int y2, int color);

imagefill( )函数来进行填充

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

imagesetpixel( )函数来绘制单个点

book imagesetpixel(resource image, int x, int y, int color);

(3)输出最终图形

用二种方法:

1)将一个图像直接输出到浏览器或者一个文件

首先,需要使用Header( )函数来指定图像的MIME类型,告诉Web浏览器我们输出的是一个图像而不是文本或者HTML:

heaeder('Content-type: image/png');

然后,可以调用函数输出图像数据:

imagepng(&im);   //或者imagejpeg,imagegif

如果输出到文件,则可以使用imagepng(&im, &filename);

2)如果是直接引用该图像,比如在<img>标签中,则不需要header( )语句。

(4)在图像保存或者显示完毕后,使用imagedestroy( )函数来释放内存资源。

bool imagedestroy(&im);



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
上次发了一个易语言内存生成验证码的源码,后来压力测试的时候发现多线程下程序会崩溃。原因是 GDI 在多线程创建hDC的时候,经常会失败,内存hDC只有一个工作区域,导致多线程冲突 所以后来研究了一段时间发现,多线程下不能用 GDI,需要用DGI+,虽然 DGI+的确是线程安全的,可是它保证安全的做法可能类似于我们易语言加许可区,所以严格意义上来说, DGI+也不是多线程的,只不过在多线程下是安全的而已 后来网上查找资料,得到了一个让人很沮丧的说法: 这是CSDN上的人说的,他说:听公司一个图形方面的大佬说过,图形绘制主流的技术,GDI、GDI+、OpenGL,D3D什么的都不支持多线程,同一时间内,只能有一个线程在屏幕绘制,所以,根本就没有什么多线程绘图这个玩意。。。 根据我这几天的测试,查看内存和CPU数据,也确实发现即使是GDI+,也只能单线程运行,多线程下也是排队进行绘图的,因为Windows只有一个画板。。。 好了,那就不纠结了,既然连OpenGL都不支持多线程绘图,那就老老实实的就这样用着吧 ============================================================================================ 本源码介绍: 还是跟上次一样,只有一个公开子程序,里面的参数做了一下调整 特点是 每个字符都可以用不同的字体,字体可以随时扩充,在哪里找到了什么好看的字体,直接安装到电脑里,然后把字体名称添加到参数里就可以了 理论上,如果经常更换字体,字体足够多的话,制作识别库是很头疼的一件事,这个用于易语言web开发很合适哟

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值