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 ...
随机推荐
-
CodeForces 548D 单调栈
Mike and Feet Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Subm ...
-
ctrip
#-*-coding:utf8-*-from lxml import etreeimport requestsimport re#编码转换import sysreload(sys)sys.setdef ...
-
[Jquery]导航菜单效果-纵向
$( document ).ready( function(e){ var $catCont = $( ".cat-cont" ); //二级菜单div var $ca ...
-
C#实现数据结构——线性表(上)
什么是线性表 数据结构中最常用也最简单的应该就是线性表,它是一种线性结构(废话,不是线性结构怎么会叫线性表?当然不是废话,古人公孙龙就说白马非马,现代生物学家也说鲸鱼不是鱼). 那什么是线性结构? 按 ...
-
IOS5开发-http get/post调用mvc4 webapi互操作(图片上传)[转]
IOS5开发-http get/post调用mvc4 webapi互操作(图片上传) 目前最流行的跨平台交互是采用http协议通过JSON对象进行互操作.这种方式最简单,也很高效.webservi ...
-
Spring学习资料以及配置环境
一.Spring4 1.介绍 新特性 SpringIDE 插件 IOC DI 在 Spring 中配置 Bean 自动装配 Bean 之间的关系(依赖.继承) Bean 的作用域 使用外部属性文件 S ...
-
计蒜客NOIP模拟赛(3)D2T1 小区划分
一条街道的两侧各连续坐落着 N 座单元楼.现在要为这些单元楼划分居民校区. 规则如下: 每个小区只能由同一侧连续的若干座单元楼组成.且两侧都恰有 K 个小区(每个小区至少有一栋楼). 两侧的小区划分规 ...
-
maven工程的多环境配置方案(profile)
前言: 写一篇水文来打发下时间吧^_^. 在应用开发中, 总会遇到开发/测试/预发布/线上环境, 其环境不同, 其具体的配置项也有所不同, 因此如何快速的切换各个环境配置, 进行打包配置, 成了一个小 ...
-
SDN期末
一.项目描述 负载均衡程序 二.小组分工 组名:我们真的很弱 组员:李佳铭.吴森杰.张岚鑫.薛宇涛.杨凌澜 三.代码演示及过程描述 四.课程总结
-
POJ 1988&;&;2236
并查集,如果只是朴素的路径压缩,那么也就是一句话的事情. 但是,一般都没有这种仁慈的裸题(假的,多了去了) 1988:带权并查集,贼鸡儿像Luogu的那道杨威利的并查集(好像是叫银河英雄传说) 开两个 ...