《PHP编程最快明白》第七讲:php图片验证码与缩略图


Posted in PHP onNovember 01, 2010

实例22 图片验证的核心代码

<?php 
//header("content-type:image/png"); 
$num ='1234'; 
$imagewidth=60; 
$imageheight=18; $numimage = imagecreate($imagewidth,$imageheight); 
imagecolorallocate($numimage,240,240,240); 
for($i=0;$i<strlen($num);$i++){ 
$x = mt_rand(1,8)+$imagewidth*$i/4; 
$y = mt_rand(1,$imageheight/4); 
$color=imagecolorallocate($numimage,mt_rand(0,150),mt_rand(0,150),mt_rand(0,150)); 
imagestring($numimage,5,$x,$y,$num[$i],$color); 
} 
for($i=0;$i<200;$i++){ 
$randcolor=imagecolorallocate($numimage,rand(200,255),rand(200,255),rand(200,255)); 
imagesetpixel($numimage,rand()%70,rand()%20,$randcolor); 
} 
imagepng($numimage); 
imagedestroy($numimage); 
?>

这个是输出4个验证码的例子,对于汉字,需要font文件和imagettftext函数,用到的时候大家再网上搜索吧。你要产生随机数,那有mt_rand函数;你还要用到session保存这个随机数;如果需要转成utf-8,需要iconv函数。

实例23 缩略图

<?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); 
?>
PHP 相关文章推荐
mysql 性能的检查和优化方法
Jun 21 PHP
在PHP中检查PHP文件是否有语法错误的方法
Dec 23 PHP
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
php中根据某年第几天计算出日期年月日的代码
Feb 24 PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
PHP简单获取视频预览图的方法
Mar 12 PHP
微信红包随机生成算法php版
Jul 21 PHP
PHP面向对象学习之parent::关键字
Jan 18 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
laravel 创建命令行命令的图文教程
Oct 23 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
Nov 01 #PHP
《PHP编程最快明白》第五讲:php目录、文件操作
Nov 01 #PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 #PHP
《PHP编程最快明白》第三讲:php数组
Nov 01 #PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 #PHP
一篇有意思的技术文章php介绍篇
Oct 26 #PHP
理解php原理的opcodes(操作码)
Oct 26 #PHP
You might like
php学习之function的用法
2012/07/14 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
JQUERY CHECKBOX全选,取消全选,反选方法三
2008/08/30 Javascript
Js event事件在IE、FF兼容性问题
2011/01/01 Javascript
Script的加载方法小结
2011/01/12 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
原生js实现键盘控制div移动且解决停顿问题
2016/12/05 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
Vue中props的详解
2019/05/16 Javascript
微信小程序 如何获取网络状态
2019/07/26 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
Python 文件和输入输出小结
2013/10/09 Python
5种Python单例模式的实现方式
2016/01/14 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
python函数的作用域及关键字详解
2019/08/20 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
大学生自我评价怎样写好
2013/10/23 职场文书
自我评价个人范文
2013/12/16 职场文书
经理秘书求职自荐信范文
2014/03/23 职场文书
《水乡歌》教学反思
2014/04/24 职场文书
还款承诺书范文
2014/05/20 职场文书
2019让人心动的商业计划书
2019/06/27 职场文书