zoukankan      html  css  js  c++  java
  • 【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 ?>
    View Code

    效果如下图所示:

    绘制出来的图形虽然由代码产生,但是可以通过浏览器直接下载下来,根据绘制的图形所用的方法不同,要对应的保存成.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加载或者gif
    10     //拷贝原图片到画布
    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 ?>
    View Code

    需要图片:1.jpg,注意图片大小要小于面板大小,否则会报错。

    效果:

    3.绘制验证码。

    我将其封装到了一个文件中,在做项目的时候可以直接使用。

    aim.php:提供用户输入验证码的图形接口,其中使用了js技术实现了点击验证码更换图片的功能。

    1 <form>请输入验证码:<input type="text" name="checkCode"><img src="checkCode.php" onclick="this.src='checkCode.php?re='+Math.random()"/>
    2 <!-- 使用js实现验证码自动更改 -->
    3 </form>
    View Code

    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 ?>
    View Code

     效果:

  • 相关阅读:
    Net包管理NuGet(3)搭建私服及引用私服的包
    MyMql 下载以及配置
    Oracle 环境部署 以及数据库创建 ,用户新建和权限分配
    VUE.JS 环境配置
    .NET WEB API 简单搭建
    C# Timer 定时任务
    RemoTing 搭建简单实现
    MVC+EF三层+抽象工厂
    ASP.NET MVC SignalR 简单聊天推送笔记
    .net Mvc Dapper 方法封装
  • 原文地址:https://www.cnblogs.com/kuangdaoyizhimei/p/3970223.html
Copyright © 2011-2022 走看看