【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 ...
随机推荐
- 二、 显示加载数据过程的JS
- Delphi实现窗体内嵌其他应用程序窗体
实现原理是启动一个应用程序,通过ProcessID得到窗体句柄,然后对其设定父窗体句柄为本程序某控件句柄(本例是窗体内一个Panel的句柄),这样就达成了内嵌的效果. 本文实现的是内嵌一个记事本程序, ...
- IOS路线图
存档,存档...
- 【System】shell 实现 bat 的pause功能
read -rsp $'Press enter to continue...\n' 参考资料: http://stackoverflow.com/questions/92802/what-is-the ...
- 【GoLang】golang 中可变参数的 定义、传递 示例
支持可变长参数列表的函数可以支持任意个传入参数,比如fmt.Println函数就是一个支持可变长参数列表的函数. package main import "fmt" // 这个函数 ...
- 【MySQL】MySQL 如何实现 唯一随机数ID
如果不是 UUID 好像比较困难 参考资料: http://bbs.csdn.net/topics/390001507 https://www.zhihu.com/question/20151242
- aspx、ashx、asmx文件处理请求效率比较
人生总是面临着许多抉择许多困惑!作为一名“攻城师”或“程序猿”的我们,工作的时候更是如此.你曾经是否苦恼过在系统中使用哪种文件编写客户端请求最合适或最高效呢?aspx.ashx.asmx到底该如何选择 ...
- Oracle 与 entity framework 6 的配置,文档
官方文档: http://docs.oracle.com/cd/E56485_01/win.121/e55744/intro001.htm#ODPNT123 Oracle 对 微软 实体框架 EF6 ...
- C++构造函数、析构函数与抛出异常
[本文链接] http://www.cnblogs.com/hellogiser/p/constructor-destructor-exceptions.html [问题] 构造函数可以抛出异常么?析 ...
- iOS 关于AFNetworking ssl 待完成
先普及下基本知识,都是从网上搜到的,感谢原作者的辛勤付出! 原文链接 http://m.blog.csdn.net/blog/bytxl/8586830 x509是数字证书的规范,P7和P12是两种封 ...