PHP利用GD库绘图和生成验证码图片
首先得确定php.ini设置有没有打开GD扩展功能,測试例如以下
print_r(gd_info());
假设有打印出内容例如以下,则说明GD功能有打开:
Array
(
[GD Version] => bundled (2.0.34 compatible)
[FreeType Support] => 1
[FreeType Linkage] => with freetype
[T1Lib Support] => 1
[GIF Read Support] => 1
[GIF Create Support] => 1
[JPG Support] => 1
[PNG Support] => 1
[WBMP Support] => 1
[XPM Support] =>
[XBM Support] => 1
[JIS-mapped Japanese Font Support] =>
)
GD绘图一般过程例如以下:
1.创建一张画布资源
2.创建颜色画笔
3.绘图
4.保存图片或输出图片
5.销毁内存画布资源
測试代码例如以下:
<? php
header("Content-type: image/jpeg"); $width = 400; //宽。高
$height = 400; $image = imagecreate($width, $height); //第一步:创建空白图像 $white = imagecolorallocate($image, 0, 0, 0); //第一次对 imagecolorallocate() 的调用会给基于调色板的图像填充背景色,即用 imagecreate() 建立的图像。 $green = imagecolorallocate($image, 0, 255, 0); //第二步:为图像分配颜色 imageline($image, 0, 20, 400, 20, $green); //第三步:画线
imagerectangle($image,100,40,300,100,$green); //画矩形
imagearc($image, 200, 150, 90, 90, 0, 360, $green); //画圆
imagestring($image, 14, 100, 240, "PHP is NiuBi HongHong!", $green); //写字符串 $str="abcdefghjklmnpqrstuvwxyz23456789";
$randstr = substr(str_shuffle($str), 0,4);
imagestring($image, 14, 100, 260, $randstr, $green); //验证码 imagettftext($image, 14, 0, 100, 300, $green, './MSJHBD.TTF', "中文vsEnglish"); //中文验证 // imagejpeg($image,'./test.jpg'); //在当前路径下保存图片为test.jpg
imagejpeg($image); //第四步:不加文件名称。直接输出到网页 imagedestroy($image); //第五步:销毁,回收资源
?>
測试图片例如以下:
注:GD库强大的能够画各种报表(如柱状图,饼状图等)、缩略图、加水印图和股票走势图
缩略图功能样例:
<?php
header("Content-type: image/png"); $width = 300; //原图宽。高
$height = 210; $thumb_width = (int)$width/2;
$thumb_height = (int)$height/2; $dst = imagecreate($thumb_width,$thumb_height); //创建缩略图画布 $gray = imagecolorallocate($dst, 100, 100, 100); $src = imagecreatefrompng('./me.png'); //读取原图 //把原图copy到缩略图画布上
imagecopyresampled($dst, $src, 0, 0, 0, 0, $thumb_width, $thumb_height, $width, $height); imagepng($dst,'./me_thumb.png'); imagedestroy($dst);
imagedestroy($src);
? >
PHP利用GD库绘图和生成验证码图片的更多相关文章
- php学习笔记:利用gd库生成图片,并实现随机验证码
说明:一些基本的代码我都进行了注释,这里实现的验证码位数.需要用的字符串都可以再设置.有我的注释,大家应该很容易能看得懂. 基本思路: 1.用mt_rand()随机生成数字确定需要获取的字符串,对字符 ...
- 第二百七十节,Tornado框架-生成验证码图片,以及验证码结合Session验证
Tornado框架-生成验证码图片,以及验证码结合Session验证 第一.生成验证码图片 生成验证码图片需要两个必须模块 1.python自带的random(随机模块) 2.Pillow()图像处 ...
- java web学习总结(九) -------------------通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- JavaWeb---总结(九)通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下: 创建一个DrawImage Servlet,用来生成验证码图片 1 package gacl. ...
- Java 生成验证码图片
生成验证码图片并对提交的输入进行验证 // HttpServletResponse常见应用——生成验证码 // 利用BufferedImage类生产随机图片 public static final i ...
- javaweb学习总结(九)—— 通过Servlet生成验证码图片
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
- 012. asp.net生成验证码图片(汉字示例/字母+数字)
protected void Page_Load(object sender, EventArgs e) { //生成验证码图片的基本步骤 string checkCode = "新年快乐& ...
- J2EE如何生成验证码图片和点击刷新验证码
验证码图片生成步骤 创建BufferedImage对象. 获取BufferedImage的画笔,即调用getGraphics()方法获取Graphics对象. 调用Graphics对象的setColo ...
- java web 学习九(通过servlet生成验证码图片)
一.BufferedImage类介绍 生成验证码图片主要用到了一个BufferedImage类,如下:
随机推荐
- HDU 5886 Tower Defence(2016青岛网络赛 I题,树的直径 + DP)
题目链接 2016 Qingdao Online Problem I 题意 在一棵给定的树上删掉一条边,求剩下两棵树的树的直径中较长那的那个长度的期望,答案乘上$n-1$后输出. 先把原来那棵树的 ...
- Gmail进程信息转储分析工具pdgmail
Gmail进程信息转储分析工具pdgmail 进程信息转储(Process Memory Dump)是数字取证的重要方式.通过分析对应进程的信息转储,可以获取大量的信息.Kali Linux提供一 ...
- [BZOJ3569]DZY Loves Chinese II(随机化+线性基)
3569: DZY Loves Chinese II Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1515 Solved: 569[Submit][S ...
- [POI2012]Festival
题目大意: 有$n$个正整数$x_1,x_2,\ldots,x_n$,再给出一些限制条件,限制条件分为两类: 1.给出$A,B$,要求满足$X_A+1=X_B$: 2.给出$C,D$,要求满足$X_C ...
- 远程debug---远程服务器参数设置
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=25 -jar myboot.jar 或者 java ...
- SQL 统计某一列出现的总和
现有数据如上图所示,要求统计出日期相同的Count总数,并且加一列统计前面日期Count的总和 SELECT SUM([Count]) AS DayTotal, SUM(SUM([Count])) o ...
- Android TextView 阴影效果(投影)
Android TextView 阴影效果(投影) 四个参数: 1 2 3 4 android:shadowColor="@color/white" android:shadowD ...
- Android-onInterceptTouchEvent()和onTouchEvent()
老实说,这两个小东东实在是太麻烦了,很不好懂,我自己那api文档都头晕,在网上找到很多资料,才知道是怎么回事,这里总结一下,记住这个原则就会很清楚了: 1.onInterceptTouchEvent( ...
- EditText中输入信息的限制的方法
应用场景 在Android应用中有时需要EditText中只允许输入约定的一些字符,禁止输入其他字符.这里列举了一些可能的应用场景. 1. 场景一 在通讯录保存好友信息界面中填写好友的电话号码时,应当 ...
- 【spring data jpa】【mybatis】通过反射实现 更新/保存 实体的任意字段的操作
代码如下: //代码示例:例如保存时,传入下面两个字段 String filed;String content; //User代表要更新的实体,user即本对象 //filed代表要更改的字段,例如u ...