【PHP绘图技术&&验证码绘制】
PHP绘图是比较简单的事情,基本绘图如直线、圆、矩形、弧线、填充矩形、填充扇形、非中文字的打印、中文文字的打印在在下面的代码中会纤细讲解。
需要支持中文的字体,可以到windows自带的字体库中找,并复制到当前目录,改名为font.ttf
- <?php
- //1.创建画布
- $im=imagecreatetruecolor(500,400);
- //2.创建一个颜色
- $red=imagecolorallocate($im,0,255,0);
- //画圆
- imageellipse($im,20,20,20,20,$red);
- //画直线
- imageline($im,0,0,400,300,$red);
- //画矩形
- imagerectangle($im,0,0,40,50,$red);
- //画填充矩形
- imagefilledrectangle($im,50,0,90,50,$red);
- //画弧线
- imagearc($im,100,100,50,50,170,350,$red);
- //画实心扇形
- imagefilledarc($im,300,200,50,50,80,210,$red,IMG_ARC_PIE);
- //写字
- //先写不带汉字的子
- $str="Hello,World!this is function imagestring!";
- imagestring($im,5,10,250,$str,$red);
- //带有汉字的文字需要使用另一个方法
- $str="Hello,Wrold!我是狂盗一枝梅!";
- imagettftext($im,30,0,10,150,$red,"font.ttf",$str);
- //输出到网页,也可以保存到文件
- header("content-type: image/png");
- imagepng($im);
- //销毁图片释放内存
- imagedestroy($im);
- ?>
效果如下图所示:
绘制出来的图形虽然由代码产生,但是可以通过浏览器直接下载下来,根据绘制的图形所用的方法不同,要对应的保存成.jpg、.png、.gif格式的图形,我们一般使用.png,因为这种格式的图像更加清晰,而PHP绘图技术主要用作绘制报表和绘制验证码用。
2.将现有图片贴到面板上。
- <?php
- //1.创建画布
- $im=imagecreatetruecolor(500,500);
- //2.创建一个颜色
- $red=imagecolorallocate($im,0,255,0);
- //加载图片
- $srcimage=imagecreatefromjpeg("1.jpg");//也可以从png加载或者gif
- //拷贝原图片到画布
- //首先获得图片信息的数组。
- $image_info_arr=getimagesize("1.jpg");
- imagecopy($im,$srcimage,0,0,0,0,$image_info_arr[0],$image_info_arr[1]);
- //输出到网页,也可以另存。
- header("content-type:image/png");
- imagepng($im);
- //销毁图片,释放内存
- imagedestroy($im);
- ?>
需要图片:1.jpg,注意图片大小要小于面板大小,否则会报错。
效果:
3.绘制验证码。
我将其封装到了一个文件中,在做项目的时候可以直接使用。
aim.php:提供用户输入验证码的图形接口,其中使用了js技术实现了点击验证码更换图片的功能。
- <form>请输入验证码:<input type="text" name="checkCode"><img src="checkCode.php" onclick="this.src='checkCode.php?re='+Math.random()"/>
- <!-- 使用js实现验证码自动更改 -->
- </form>
checkCode.php:提供了绘制验证码的流程控制代码。
- <?php
- //首先定义一个空字符串
- $checkCode="";
- //随机生成四个数并拼接起来
- for($i=1;$i<=4;$i++)
- {
- $checkCode.=rand(0,9);
- }
- //开始绘制验证码
- //1.生成画布
- $im=imagecreatetruecolor(45,25);
- //2.随机生成一个颜色
- $color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
- //$color=imagecolorallocate($im,255,0,0);
- //3.绘制干扰线
- for($i=1;$i<=20;$i++)
- {
- imageline($im,0,rand(0,24),44,rand(0,24),imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255)));
- }
- //4.绘制字符串
- imagestring($im,5,3,3,$checkCode,$color);
- header("content-type: image/png");
- imagepng($im);
- //4.销毁图片
- imagedestroy($im);
- ?>
效果:
【PHP绘图技术&&验证码绘制】的更多相关文章
- 【 java版坦克大战--绘图技术】 绘制坦克
通过上一节,我们学会的用java绘图.那现在就用java绘制自己坦克. 首先通过分析坦克由这几部分组成.如图 各个部件的长宽如图.15,10为圆心. /** * 坦克游戏的1.0版 * 1.画出坦克 ...
- 【二十七】php之绘图技术(gd、jpgraph、短信随机验证码)
1.绘图技术(GD库) 注意:使用该库,php.ini文件中的extension=php_gd2.dll必须是开启状态,不然无法使用 图片格式:目前网站开发常见的图片格式有gif,jpg/jpeg,p ...
- 【MFC】MFC绘制动态曲线,用双缓冲绘图技术防闪烁
摘自:http://zhy1987819.blog.163.com/blog/static/841427882011614103454335/ MFC绘制动态曲线,用双缓冲绘图技术防闪烁 2011 ...
- Windows 窗体的.Net 框架绘图技术
当编写一个典型的Windows 窗体程序时,窗体和控件的绘制.效果等操作是不需要特别加以考虑的.这是为什么呢?因为通过使用 .Net 框架,开发人员可以拖动一系列的控件到窗体上,并书写一些简单的与事件 ...
- PHP自学之路---报表及绘图技术
Ø 报表 a) 什么是报表 报表就是用表格.图表等格式来动态显示数据. b) PHP绘图坐标系 1. 坐标系介绍 下图说明了PHP坐标系.坐标原点位于左上角,以像素为单 ...
- PHP 绘图技术
1.图片格式:目前网站开发常见的图片格式有gif,jpg/jpeg,png ..... 区别: gif 图片压缩率高,但是只能显示256色,可能造成颜色的丢失,可以显示动画 jpg/jpeg 图片压缩 ...
- 对于PHP绘图技术的理解
要使用PHP绘图,就得在php.ini文件中设置一下 找到这个位置 ;extension=php_gd2.dll,然后把前面的分号去掉,重启下apache就可以了 几乎每行代码我都写了注释,方便看懂 ...
- 【转 | 侵删】2D 绘图技术中的坐标系统与坐标变换
本文介绍在 2D 绘图技术中的坐标系统和坐标变换的相关知识.同时介绍 Kity 在这方面提供的 API .希望这些知识对于需要进行图形应用开发的同学会有所帮助. 锤子的故事 很久以前,有一个画家,他很 ...
- Python使用Plotly绘图工具,绘制直方图
今天我们再来讲解一下Python使用Plotly绘图工具如何绘制直方图 使用plotly绘制直方图需要用到graph_objs包中的Histogram函数 我们将数据赋值给函数中的x变量,x = da ...
随机推荐
- java中类名,方法,变量,包名等大小写命名规范
类名:首字母大写,其他单词中首字母大写,其他小写方法名:首字母小写,其他单词中首字母大写,其他小写变量:与方法名规则同包名:全部小写接口interface:I开头
- 音频DAC剖析---解开HI-FI音质的秘密
选自:http://mp3.zol.com.cn/54/547689.html 无论我们是买MP3.MP4也好,实际上我们的数码播放器最经常使用的就是音乐播放功能,所以数码播放器的音质,一直是消费者的 ...
- zabbix3.0报错记录
一.问题描述 在zabbix_server添加变量时,出现了以下的报错,
- 利用php的register_shutdown_function来记录php的输出日志
最近在做的一个项目..由于全是通过远程http请求来调用php的接口程序.. 接收到的参数和返回的内容对开发人员来说都是未知不可见的.. 虽然可以通过直接在脚本中模拟请求..但由于实际环境复杂的多.. ...
- Valid Number
Validate if a given string is numeric. Some examples:"0" => true" 0.1 " => ...
- iOS 目录的使用
Table 1-1 Commonly used directories of an iOS app Directory Description AppName.app This is the ap ...
- ios中的RunLoop 和 android 中的Looper
今天写android程序,用到了Handler,晚上回来查阅资料,发现了Looper这个概念. 看了一下网上关于Looper的资料,发现这个Looper跟ios中的Runloop基本的理念完全一致! ...
- [转]Handler MessageQueue Looper消息循环原理分析
Handler MessageQueue Looper消息循环原理分析 Handler概述 Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler ...
- HTML 基础
1.HTML 超文本标记语言 2.网页分类: 动态网页 静态网页 ①静态网页与动态网页区别: 主要:动态网页与数据库链接,静态网页不与数据库连接: ②静态网页 修改展示图片 必须修改源代码 : ...
- ios cell左滑删除
iOS项目开发小技能 (三) -UITableView实现Cell左划删除等自定义功能 www.MyException.Cn 网友分享于:2015-06-05 浏览:0次 iOS项目开发小技巧 ...