php生成验证码详细教程
本文章提供一款php教程生成验证码详细教程,前面是讲关于生成验证核心代码,后面是一款生成与调用的方法。
代码如下 | 复制代码 |
<?php $numimage = imagecreate($imagewidth,$imageheight); for($i=0;$i<200;$i++){ |
来看一款生成验证码实例
代码如下 | 复制代码 |
<?php //生成验证码图片 session_start(); header("content-type: image/png"); srand((double)microtime()*1000000); $roundnum=rand(1000,9999); //把随机数存入session以便以后用 $_session["sessionround"]=$roundnum; $im = imagecreate(58,28); $red = imagecolorallocate($im, 255,0,0); $blue = imagecolorallocate($im, 0,255,0); //局域填充,相当于背景 imagefill($im,68,30,$red); //将四位整数验证码绘入图片 imagestring($im, 5, 10, 8, $roundnum, $blue); for($i=0;$i<50;$i++) //加入干扰象素 { imagesetpixel($im, rand()%70 , rand()%30 , $black); } imagepng($im); imagedestroy($im); ?> |
html调用 方法
代码如下 | 复制代码 |
<td>验证码</td><td width="20%"> <input name="validt" type="text" size="10" maxlength="4"/></td><td colspan="3" width="80%"> <img src="/www.111cn.net/validitpicture.php" name="validitpic" align="absmiddle" /></td> |
本文章提供这款图片处理类,他可以做的事情有把图片生成缩略图,可能给图片增加水印以及获取图片信息,算是比较实用代码又简洁的函数*/
代码如下 | 复制代码 |
class image function __construct() function image() function watermark($image,$pos=9,$watermarkimg='images/watermark.gif',$pct=65,$text='',$w_font=5,$w_color='#ff0000') function info($image) |
本文章提供一款php教程中文汉字验证码生成程序,如果在图片片生成汉字,需要font文件和imagettftext函数,用到的时候大家再网上搜索吧。你要产生随机数,那有mt_rand函数;你还要用到session保存这个随机数;如果需要转成utf-8,需要iconv函数。
<?php
class simpleimage {
var $image;
var $image_type;
function load($filename) {
$image_info = getimagesize($filename);
$this->image_type = $image_info[2];
if( $this->image_type == imagetype_jpeg ) {
$this->image = imagecreatefromjpeg($filename);
} elseif( $this->image_type == imagetype_gif ) {
$this->image = imagecreatefromgif($filename);
} elseif( $this->image_type == imagetype_png ) {
$this->image = imagecreatefrompng($filename);
}
}
function save($filename, $image_type=imagetype_jpeg, $compression=75, $permissions=null) {
if( $image_type == imagetype_jpeg ) {
imagejpeg($this->image,$filename,$compression);
} elseif( $image_type == imagetype_gif ) {
imagegif($this->image,$filename);
} elseif( $image_type == imagetype_png ) {
imagepng($this->image,$filename);
}
if( $permissions != null) {
chmod($filename,$permissions);
}
}
function output($image_type=imagetype_jpeg) {
if( $image_type == imagetype_jpeg ) {
imagejpeg($this->image);
} elseif( $image_type == imagetype_gif ) {
imagegif($this->image);
} elseif( $image_type == imagetype_png ) {
imagepng($this->image);
}
}
function getwidth() {
return imagesx($this->image);
}
function getheight() {
return imagesy($this->image);
}
function resizetoheight($height) {
$ratio = $height / $this->getheight();
$width = $this->getwidth() * $ratio;
$this->resize($width,$height);
}
function resizetowidth($width) {
$ratio = $width / $this->getwidth();
$height = $this->getheight() * $ratio;
$this->resize($width,$height);
}
function scale($scale) {
$width = $this->getwidth() * $scale/100;
$height = $this->getheight() * $scale/100;
$this->resize($width,$height);
}
function resize($width,$height) {
$new_image = imagecreatetruecolor($width, $height);
imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getwidth(), $this->getheight());
$this->image = $new_image;
}
}
$newfile = upload_dir."/icons/".md5($_session['user']->email).".jpg";//上传文件保存的目录
$image = new simpleimage();
$image->load($_files['icons']['tmp_name']);//上传的临时文件名
$image->resizetowidth(80);设置宽度
$image->save($newfile);
?>
imagemagic官方去除图片背景的命令行模式:
代码如下 | 复制代码 |
convert -size 140x80 xc:none -fill grey -gravity northwest -draw "text 10,10 'copyright'" -gravity southeast -draw "text 5,15 'copyright'" miff:- | composite -tile - logo.jpg wmark_text_tiled.jpg |
imagick代码:
代码如下 | 复制代码 |
<?php $image = new imagick('logo.jpg'); $im = new imagick(); $im->newimage( 140, 80, new imagickpixel( "none" ) ); $draw = new imagickdraw(); $draw->setfillcolor(new imagickpixel( "grey" )); $draw->setgravity(imagick::gravity_northwest); $draw->annotation(10,10 ,'copyright'); $draw->setgravity(imagick::gravity_southeast); $draw->annotation(5,15 ,'copyright'); $im->drawimage( $draw); $image = $image->textureimage($im); $image->compositeimage($image,imagick::composite_copy,0,0); header( "content-type: image/{$image->getimageformat()}" ); $image->writeimage('wmark_text_tiled.jpg'); $image->clear(); $image->destroy(); ?> |
如果你的机型还没装php_imagick就下载吧,下载地址如下
http://pecl.php.net/package/imagick
php gd库是不可以给gif图片加水印了,如果要利用php给gif图片增加水印的话,就得借助于一款ImageMagick功能的PHP扩展,它可以帮我们完成我们想要的功能哦。代码如下 | 复制代码 |
<?php $imagedraw = new imagick(); $pixel = new imagickpixel('gray'); $pixel->setcolor('black'); $imagedraw->newimage(100, 75, $pixel); $draw = new imagickdraw(); $draw->setfont('bookman-demiitalic'); $draw->setfontsize(12); $image=new imagick(); $animation = new imagick(); $animation->setformat( "gif" ); $image->readimage("old.gif"); $unitl = $image->getimageindex(); $image->writeimages('animation.gif',false); $delay = $image->getimagedelay(); $filename = 'animation-'; for ($i=0; $i<$unitl; $i++) { $thisimage = new imagick(); $thisimage->readimage($filename.$i.'.gif'); $thisimage->annotateimage($draw, 0, 12, 0, 'copyright by mpeg'); $animation->addimage($thisimage); $animation->setimagedelay($delay); } header("content-type: image/gif"); echo $animation->getimagesblob(); ?> |
imagemagick功能的php扩展。使用这个扩展可以使php具备和imagemagick相同的功能。 imagemagick是一套功能强大、稳定而且免费的工具集和开发包,可以用来读、写和处理超过185种基本格式的图片文件,包括流行的tiff, jpeg, gif, png, pdf以及photocd等格式。利用imagemagick,你可以根据web应用程序的需要动态生成图片, 还可以对一个(或一组)图片进行改变大小、旋转、锐化、减色或增加特效等操作,并将操作的结果以相同格式或其它格式保存。
组件下载地址
http://pecl.php.net/package/imagick
http://www.imagemagick.org
相关文章
- 最近想自学PHP ,做了个验证码,但不知道怎么搞的,总出现一个如下图的小红叉,但验证码就是显示不出来,原因如下 未修改之前,出现如下错误; (1)修改步骤如下,原因如下,原因是apache权限没开, (2)点击打开php.int., 搜索extension=ph...2013-10-04
jQuery Real Person验证码插件防止表单自动提交
本文介绍的jQuery插件有点特殊,防自动提交表单的验证工具,就是我们经常用到的验证码工具,先给大家看看效果。效果图如下: 使用说明 需要使用jQuery库文件和Real Person库文件 同时需要自定义验证码显示的CSS样式 使用实例...2015-11-08- 这篇文章主要为大家详细介绍了JS实现随机生成验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-06
- 本文介绍两种使用 php 生成二维码的方法。 (1)利用google生成二维码的开放接口,代码如下: /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param strin...2015-10-21
- 这篇文章主要介绍了Java生成随机姓名、性别和年龄的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-01
- 这篇文章主要介绍了C#生成随机数功能,涉及C#数学运算与字符串操作相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 关于生成唯一数字ID的问题,是不是需要使用rand生成一个随机数,然后去数据库查询是否有这个数呢?感觉这样的话有点费时间,有没有其他方法呢?当然不是,其实有两种方法可以解决。 1. 如果你只用php而不用数据库的话,那时间戳+随...2015-11-24
- 通过jquery.cookie.js插件可以快速实现“点击获取验证码后60秒内禁止重新获取(防刷新)”的功能效果图:先到官网(http://plugins.jquery.com/cookie/)下载cookie插件,放到相应文件夹,代码如下:复制代码 代码如下: <!DOCTYPE ht...2015-03-15
- 下面小编就为大家带来一篇jQuery为动态生成的select元素添加事件的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-09-01
- 经常制作开发不同的网站的后台,写过很多种不同的后台导航写法。 最终积累了这种最写法,算是最好的吧...2013-09-29
- 验证码类文件 CreateImg.class.php <?php class ValidationCode { private $width,$height,$codenum; public $checkcode; //产生的验证码 private $checkimage; //验证码图片 private $disturbColor = ''; /...2015-11-08
- 这篇文章主要介绍了基于JavaScript实现验证码功能的相关资料...2017-04-03
- js生成随机数主要用到了内置的Math对象的random()方法。用法如:Math.random()。它返回的是一个 0 ~ 1 之间的随机数。有了这么一个方法,那生成任意随机数就好理解了。比如实际中我们可能会有如下的需要: (1)生成一个 0 - 1...2015-10-21
Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法
这篇文章主要介绍了Bootstrap中文本框的宽度变窄并且加入一副验证码图片的实现方法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下...2016-06-24- 下面小编就为大家带来一篇单击按钮发送验证码,出现倒计时的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧 代码...2017-07-06
- 验证码是一个现在WEB2.0中常见的一个功能了,像注册、登录又或者是留言页面,都需要注册码来验证当前操作者的合法性,我们会看到有些网站没有验证码,但那是更高级的验证了,...2016-11-25
- 这篇文章主要介绍了基于Pytorch版yolov5的滑块验证码破解思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-25
- 复制代码 代码如下:function getTagStyle(){ $minFontSize=8; //最小字体大小,可根据需要自行更改 $maxFontSize=18; //最大字体大小,可根据需要自行更改 return 'font-size:'.($minFontSize+lcg_value()*(abs($maxFo...2013-10-04
- 下面小编就为大家带来一篇JS生成某个范围的随机数【四种情况详解】。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧...2016-04-22
- 最近接到新需求,需要实现一个点击发送验证码之后,按钮禁用,在5秒之后取消禁用,看似需求很简单,实现起来还真的好好动动脑筋,下面小编把jquery控制按钮禁用核心代码分享给大家,需要的朋友参考下吧...2021-07-24