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. ?>

效果:

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

  1. 【 java版坦克大战--绘图技术】 绘制坦克

    通过上一节,我们学会的用java绘图.那现在就用java绘制自己坦克. 首先通过分析坦克由这几部分组成.如图 各个部件的长宽如图.15,10为圆心. /** * 坦克游戏的1.0版 * 1.画出坦克 ...

  2. 【二十七】php之绘图技术(gd、jpgraph、短信随机验证码)

    1.绘图技术(GD库) 注意:使用该库,php.ini文件中的extension=php_gd2.dll必须是开启状态,不然无法使用 图片格式:目前网站开发常见的图片格式有gif,jpg/jpeg,p ...

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

    摘自:http://zhy1987819.blog.163.com/blog/static/841427882011614103454335/ MFC绘制动态曲线,用双缓冲绘图技术防闪烁   2011 ...

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

    当编写一个典型的Windows 窗体程序时,窗体和控件的绘制.效果等操作是不需要特别加以考虑的.这是为什么呢?因为通过使用 .Net 框架,开发人员可以拖动一系列的控件到窗体上,并书写一些简单的与事件 ...

  5. PHP自学之路---报表及绘图技术

    Ø  报表 a)        什么是报表 报表就是用表格.图表等格式来动态显示数据. b)        PHP绘图坐标系 1.  坐标系介绍 下图说明了PHP坐标系.坐标原点位于左上角,以像素为单 ...

  6. PHP 绘图技术

    1.图片格式:目前网站开发常见的图片格式有gif,jpg/jpeg,png ..... 区别: gif 图片压缩率高,但是只能显示256色,可能造成颜色的丢失,可以显示动画 jpg/jpeg 图片压缩 ...

  7. 对于PHP绘图技术的理解

    要使用PHP绘图,就得在php.ini文件中设置一下 找到这个位置 ;extension=php_gd2.dll,然后把前面的分号去掉,重启下apache就可以了 几乎每行代码我都写了注释,方便看懂 ...

  8. 【转 | 侵删】2D 绘图技术中的坐标系统与坐标变换

    本文介绍在 2D 绘图技术中的坐标系统和坐标变换的相关知识.同时介绍 Kity 在这方面提供的 API .希望这些知识对于需要进行图形应用开发的同学会有所帮助. 锤子的故事 很久以前,有一个画家,他很 ...

  9. Python使用Plotly绘图工具,绘制直方图

    今天我们再来讲解一下Python使用Plotly绘图工具如何绘制直方图 使用plotly绘制直方图需要用到graph_objs包中的Histogram函数 我们将数据赋值给函数中的x变量,x = da ...

随机推荐

  1. java中类名,方法,变量,包名等大小写命名规范

    类名:首字母大写,其他单词中首字母大写,其他小写方法名:首字母小写,其他单词中首字母大写,其他小写变量:与方法名规则同包名:全部小写接口interface:I开头

  2. 音频DAC剖析---解开HI-FI音质的秘密

    选自:http://mp3.zol.com.cn/54/547689.html 无论我们是买MP3.MP4也好,实际上我们的数码播放器最经常使用的就是音乐播放功能,所以数码播放器的音质,一直是消费者的 ...

  3. zabbix3.0报错记录

    一.问题描述 在zabbix_server添加变量时,出现了以下的报错,

  4. 利用php的register_shutdown_function来记录php的输出日志

    最近在做的一个项目..由于全是通过远程http请求来调用php的接口程序.. 接收到的参数和返回的内容对开发人员来说都是未知不可见的.. 虽然可以通过直接在脚本中模拟请求..但由于实际环境复杂的多.. ...

  5. Valid Number

    Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...

  6. iOS 目录的使用

    Table 1-1  Commonly used directories of an iOS app  Directory Description AppName.app This is the ap ...

  7. ios中的RunLoop 和 android 中的Looper

    今天写android程序,用到了Handler,晚上回来查阅资料,发现了Looper这个概念. 看了一下网上关于Looper的资料,发现这个Looper跟ios中的Runloop基本的理念完全一致! ...

  8. [转]Handler MessageQueue Looper消息循环原理分析

    Handler MessageQueue Looper消息循环原理分析   Handler概述 Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler ...

  9. HTML 基础

    1.HTML  超文本标记语言 2.网页分类: 动态网页   静态网页 ①静态网页与动态网页区别:  主要:动态网页与数据库链接,静态网页不与数据库连接: ②静态网页 修改展示图片 必须修改源代码 : ...

  10. ios cell左滑删除

    iOS项目开发小技能 (三) -UITableView实现Cell左划删除等自定义功能 www.MyException.Cn  网友分享于:2015-06-05  浏览:0次   iOS项目开发小技巧 ...