【PHP绘图技术&&验证码绘制】

PHP绘图是比较简单的事情,基本绘图如直线、圆、矩形、弧线、填充矩形、填充扇形、非中文字的打印、中文文字的打印在在下面的代码中会纤细讲解。

需要支持中文的字体,可以到windows自带的字体库中找,并复制到当前目录,改名为font.ttf

 1 <?php
 2     //1.创建画布
 3     $im=imagecreatetruecolor(500,400);
 4     //2.创建一个颜色
 5     $red=imagecolorallocate($im,0,255,0);
 6     //画圆
 7     imageellipse($im,20,20,20,20,$red);
 8     //画直线
 9     imageline($im,0,0,400,300,$red);
10     //画矩形
11     imagerectangle($im,0,0,40,50,$red);
12     //画填充矩形
13     imagefilledrectangle($im,50,0,90,50,$red);
14     //画弧线
15     imagearc($im,100,100,50,50,170,350,$red);
16     //画实心扇形
17     imagefilledarc($im,300,200,50,50,80,210,$red,IMG_ARC_PIE);
18     //写字
19     //先写不带汉字的子
20     $str="Hello,World!this is function imagestring!";
21     imagestring($im,5,10,250,$str,$red);
22     //带有汉字的文字需要使用另一个方法
23     $str="Hello,Wrold!我是狂盗一枝梅!";
24     imagettftext($im,30,0,10,150,$red,"font.ttf",$str);
25     //输出到网页,也可以保存到文件
26     header("content-type: image/png");
27     imagepng($im);
28     //销毁图片释放内存
29     imagedestroy($im);
30 ?>

效果如下图所示:

绘制出来的图形虽然由代码产生,但是可以通过浏览器直接下载下来,根据绘制的图形所用的方法不同,要对应的保存成.jpg、.png、.gif格式的图形,我们一般使用.png,因为这种格式的图像更加清晰,而PHP绘图技术主要用作绘制报表和绘制验证码用。

2.将现有图片贴到面板上。

 1 <?php
 2
 3     //1.创建画布
 4     $im=imagecreatetruecolor(500,500);
 5     //2.创建一个颜色
 6     $red=imagecolorallocate($im,0,255,0);
 7
 8     //加载图片
 9     $srcimage=imagecreatefromjpeg("1.jpg");//也可以从png加载或者gif
10     //拷贝原图片到画布
11
12     //首先获得图片信息的数组。
13     $image_info_arr=getimagesize("1.jpg");
14     imagecopy($im,$srcimage,0,0,0,0,$image_info_arr[0],$image_info_arr[1]);
15
16     //输出到网页,也可以另存。
17     header("content-type:image/png");
18     imagepng($im);
19     //销毁图片,释放内存
20     imagedestroy($im);
21 ?>

需要图片:1.jpg,注意图片大小要小于面板大小,否则会报错。

效果:

3.绘制验证码。

我将其封装到了一个文件中,在做项目的时候可以直接使用。

aim.php:提供用户输入验证码的图形接口,其中使用了js技术实现了点击验证码更换图片的功能。

1 <form>请输入验证码:<input type="text" name="checkCode"><img src="checkCode.php" onclick="this.src=‘checkCode.php?re=‘+Math.random()"/>
2 <!-- 使用js实现验证码自动更改 -->
3 </form>

checkCode.php:提供了绘制验证码的流程控制代码。

 1 <?php
 2     //首先定义一个空字符串
 3     $checkCode="";
 4     //随机生成四个数并拼接起来
 5     for($i=1;$i<=4;$i++)
 6     {
 7         $checkCode.=rand(0,9);
 8     }
 9
10     //开始绘制验证码
11
12     //1.生成画布
13     $im=imagecreatetruecolor(45,25);
14     //2.随机生成一个颜色
15     $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
16     //$color=imagecolorallocate($im,255,0,0);
17
18     //3.绘制干扰线
19     for($i=1;$i<=20;$i++)
20     {
21         imageline($im,0,rand(0,24),44,rand(0,24),imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)));
22     }
23     //4.绘制字符串
24     imagestring($im,5,3,3,$checkCode,$color);
25     header("content-type: image/png");
26     imagepng($im);
27
28     //4.销毁图片
29     imagedestroy($im);
30 ?>

效果:

时间: 2024-08-07 04:47:32

【PHP绘图技术&&验证码绘制】的相关文章

【MFC】MFC绘制动态曲线,用双缓冲绘图技术防闪烁

摘自:http://zhy1987819.blog.163.com/blog/static/841427882011614103454335/ MFC绘制动态曲线,用双缓冲绘图技术防闪烁 2011-07-14 10:34:54|  分类: 学习笔记 |  标签:双缓冲绘图技术  mfc  动态曲线   |举报 |字号 订阅 先上效果图 随着时间的推移,曲线向右平移,同时X轴的时间坐标跟着更新.一.如何绘制动态曲线. 所谓动画,都是一帧一帧的图像连续呈现在用户面前形成的.所以如果你掌握了如何绘制静

PHP 绘图技术

1.图片格式:目前网站开发常见的图片格式有gif,jpg/jpeg,png ..... 区别: gif 图片压缩率高,但是只能显示256色,可能造成颜色的丢失,可以显示动画 jpg/jpeg 图片压缩率高(有损压缩),可以用较小的文件来显示,网页上用得比较多 png 该格式综合了gif和jpg的优势,缺点是不能显示动画 2.通过PHP编程来绘图 <?php $width=800; $height=600; //绘图技术 基本步骤 前提:在php.ini文件中启用gd库 //创建画布 默认背景是黑

Windows-消息映射机制原理和简单的绘图技术

Windows-消息映射机制原理和简单的绘图技术 1.MFC消息映射机制 众所周知,Windows程序是基于消息编程的,但是在MFC中已经为我们封装好了这个框架的消息机制,我们需要了解它的实现原理,才能深入的学习和精通Visual C++. **(1).消息映射机制的原理: MFC消息映射机制的具体实现方法是,在每个能接收和处理消息的类中,定义一个消息和消息函数静态对照表,即消息映射表.在消息映射表中,消息与对应的消息处理函数指针是成对出现的.某个类能处理的所有消息及其对应的消息处理函数的地址都

VC双缓冲绘图技术介绍

VC双缓冲绘图技术介绍 双缓冲绘图,它是一种基本的图形图像绘图技术.首先,它在内存中创建一个与屏幕绘图区域一致的对象,然后将图形绘制到内存中的这个对象上,最后把这个对象上的图形数据一次性地拷贝并显示到屏幕上.这种技术能够大大地提高绘图的速度,减少卡顿和闪屏的问题. 我们为什么要使用双缓冲技术来进行绘图? 在应用程序开发中,当图像信息数据量很大时,绘图可能需要几秒钟甚至更长的时间,这时,应用程序可能会出现卡顿的现象.另外,如果窗体在响应WM_PAINT消息的同时也要进行复杂的图形处理,那么窗体在重

Windows 窗体的.Net 框架绘图技术

当编写一个典型的Windows 窗体程序时,窗体和控件的绘制.效果等操作是不需要特别加以考虑的.这是为什么呢?因为通过使用 .Net 框架,开发人员可以拖动一系列的控件到窗体上,并书写一些简单的与事件相关联的代码然后在IDE中按F5,一个完完全全的窗体程序就诞生了!所有控件都将自己绘制自己,窗体或者控件的大小和缩放都调整自如.在这里经常会用到的,且需要引起一点注意的就是控件效果.游戏,自定义图表控件以及屏幕保护程序的编写会需要程序员额外撰写用于响应 Paint 事件的代码. 本文针对那些Wind

Win32下双缓冲绘图技术

一:双缓冲原理 为了解决窗口刷新频率过快所带来的闪烁问题,利用双缓冲技术进行绘图.所谓双缓冲技术,就是将资源加载到内存,然后复制内存数据到设备DC(这个比较快),避免了直接在设备DC上绘图(这个比较慢).打个简单的比方:有个画家在街边办了一个即时画展,在同一块画布上根据观众的要求画不同的图像,每当有一位观众制定要看什么画时,画家先把之前画布上的东西全部擦干净,再重新绘画.显然有一些经典的画像是大家都想看的,按照以前的老办法,画家每次都要重新画这幅图像,但这种擦了画,画了擦的方式很费时.所以画家想

JAVA入门到精通-第33讲-绘图技术.坦克大战1

    用的是Access数据库,安全性不够好,性能也不够强大:   躲在这里,坦克很少过来,做了一个随机数: 把得分的记录保存在数据库里面: SQLServer2005中型数据库:    (x,y)坐标:     800x600:     表示计算机屏幕上的每一行由800个点组成,共有600行:   共有480000个像素:   java绘图技术:   绘图一般在JPane上画: 覆盖JPanel的paintat方法 Graphics是一个图形画笔类,绘图的重要类,可以理解为一只画笔 supe

对于PHP绘图技术的理解

要使用PHP绘图,就得在php.ini文件中设置一下 找到这个位置 ;extension=php_gd2.dll,然后把前面的分号去掉,重启下apache就可以了 几乎每行代码我都写了注释,方便看懂 <?php        //PHP绘图技术 //创建画布,默认背景是黑色    $im=imagecreatetruecolor(400,300); //绘制需要的各种图形    //创建一个颜色    $red=imagecolorallocate($im,255,0,0);        //

JAVA绘图技术

坐标体系 坐标原点位于左上角,以像素为单位,像素是计算机屏幕上最小的显示单位,在java的坐标系中,第一个是x坐标,表示当前位置位水平方向,距离坐标原点x个像素:第二个是y坐标,表示当前位置位垂直方向,距离坐标点y个像素. 绘图原理 Component类提供了两个绘图相关最要的方法: Ⅰ.paint(Graphics g)绘制组件的外观 (当组件第一次在屏幕显示的时候,程序会自动调用paint函数) Ⅱ.repaint()刷新组件的外观. 在以下情况paint()将会被调用: Ⅰ.窗口最小化,再