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绘图技术&&验证码绘制】的更多相关文章

  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. SNMP常用数据操作

    SNMP常用数据操作 snmp编程中常见的数据类型基本上就是integer32/oct_str(字节数组)/counter64/timeticks/dateAndTime这些.很多其它的比如Truth ...

  2. CI基本配置

    <?php defined('BASEPATH') OR exit('No direct script access allowed'); /* |----------------------- ...

  3. js之词法分析

    词法分析 词法分析: 先分析参数: 再分析变量声明: 分析函数声明: 一个函数能使用的局部变量,就从上面的3步分析而来 具体步骤: 1.函数运行前的一瞬间,生成 Active Object(活动对象) ...

  4. centos 6.5 apache配置web应用&防火墙设置(入门级)

    硬件:centos 6.5 服务器 , Dell R420 , 两个网口,一个给公网,一个给内网. 软件:apache 2.2 配置了virtualhost以后,用curl在本地可以访问.但是其他机器 ...

  5. C# XML和实体类之间相互转换(序列化和反序列化)

    我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...

  6. 【GoLang】golang中可以直接返回slice吗?YES

    结论: 可以,slice本质是结构体,返回slice时返回的是结构体的值,结构体的指针.len.cap等信息也全部返回了. 如下: type slice struct { start *uintptr ...

  7. C#中 int.TryParse 的用法

    int i = -1;bool b = int.TryParse(null, out i);执行完毕后,b等于false,i等于0,而不是等于-1,切记. int i = -1;bool b = in ...

  8. SQL Server 中几种常见的约束关系

    1.创建唯一约束 当表中已创建主键,但又要保证其他数据列的值唯一时,可以使用唯一约束,并且唯一约束允许NULL值(只有一个) (1)展开指定的数据库: (2)右击要创建唯一约束的表,在弹出的快捷菜单中 ...

  9. 去掉mysql数据库字段中的个别字符

     update 表名 set 列名 = REPLACE (mcategory,"要去掉的字符","") where 列名 like "%要去掉的字符% ...

  10. 日历插件My97DatePicker的使用

    在开发过程中,我们会经常遇到让用户输入日期的表单,这类表单处理起来也不是太繁琐,就是简单的字符串和日期之间的转换.但是,如果用户不按照已设定的日期格式进行输入,必定会造成不必要的麻烦.为了更好的处理这 ...