首页 > 代码库 > 【PHP绘图技术&&验证码绘制】
【PHP绘图技术&&验证码绘制】
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加载或者gif10 //拷贝原图片到画布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="http://www.mamicode.com/checkCode.php" onclick="this.src=http://www.mamicode.com/‘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绘图技术&&验证码绘制】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。